3D项目中用到的一些算法

这篇具有很好参考价值的文章主要介绍了3D项目中用到的一些算法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

判断点是否在多边形内部(冬奥)
(1)面积和判别法:判断目标点与多边形的每条边组成的三角形面积和是否等于该多边形,相等则在多边形内部。
(2)夹角和判别法:判断目标点与所有边的夹角和是否为360度,为360度则在多边形内部。
(3)引射线法:从目标点出发引一条射线,看这条射线和多边形所有边的交点数目。如果有奇数个交点,则说明在内部,如果有偶数个交点,则说明在外部。
判断点是否在四边形内部(冬奥)

pointInRect(areaVertex, pos){// 四边形内的点都在顺时针(逆时针)向量的同一边,即夹角小于90o,向量积同向。
		var A = areaVertex[0], B = areaVertex[1], C = areaVertex[2], D = areaVertex[3];
		var x = pos.x, y = pos.z;
		var a = (B[0] - A[0])*(y - A[1]) - (B[1] - A[1])*(x - A[0]);
		var b = (C[0] - B[0])*(y - B[1]) - (C[1] - B[1])*(x - B[0]);
		var c = (D[0] - C[0])*(y - C[1]) - (D[1] - C[1])*(x - C[0]);
		var d = (A[0] - D[0])*(y - D[1]) - (A[1] - D[1])*(x - D[0]);
		if((a > 0 && b > 0 && c > 0 && d > 0) || (a < 0 && b < 0 && c < 0 && d < 0)) {
			return true;
		}
		return false; 
	}

计算点到直线的距离(冬奥)

pointToLine(line, point){// 计算点到直线的最短距离;
		let p1 = line[0], p2 = line[1], p3 = point;
		var A = (p1[1] - p2[1]) / (p1[0] - p2[0]);
		var B = p1[1] - A * p1[0];
		return Math.abs((A * p3.x + B - p3.z) / Math.sqrt(A * A + 1));
	}

计算点到线段的最短距离(冬奥)

已知当前绕Y轴的角度值(绕x,z角度均为0),求解方向向量(x,y,z)

let modR = mod.transform.rotationEuler.y / 180 * Math.PI;
let x = -Math.sin(modR);
let z = -Math.cos(modR);
this.rigidBody.move(new Laya.Vector3(x / 100 * this.speed * this.devSpeed, 0, z / 100 * this.speed * this.devSpeed));

已知向量a,b,求解a,b向量的夹角,及a在b向量的顺时针方向还是逆时针方向

let cosAlpha = Laya.Vector3.dot(aV,bV) / (Laya.Vector3.scalarLength(aV) * Laya.Vector3.scalarLength(bV));
let alpha = Math.acos(cosAlpha);// 此值始终大于0小于Math.PI;
let cross = (aV.x * bV.z - bV.x * aV.z);
let g = cross > 0 ? -0.03 : 0.03;// aV在bV的逆时针方向为-0.03;aV在bV的顺时针方向为0.03;

已知两点a,b,计算两点延长线上的某一点(延长距离为dis)(灯笼)
var c = a - b;
c.normalize();
a + c*dis;

圆方程(摇杆)
x平方 + y平方 = z平方文章来源地址https://www.toymoban.com/news/detail-474727.html

到了这里,关于3D项目中用到的一些算法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • git常见使用 --实习中用到的

    1.正常的上传和提交 2.git rebase 当存在多个commit的提交节点时,统一成一次提交。 3.版本回退 git reset --hard :把head指向之前的某次提交。hard是强制回退,不保存中间提交的内容。 git revert -n 版本号 : 不会丢失现有版本的提交记录,生成一个新版本 4.查看分支+切换分支 git b

    2024年02月07日
    浏览(25)
  • 多媒体工作中用到的小工具

    安利下嵌入式多媒体用到的各种小工具 下面是同事们推荐的 以下是对这些软件的简要介绍: ocenaudio :ocenaudio是一款跨平台的音频编辑软件,它提供了直观的界面和丰富的功能,可以帮助用户进行音频剪辑、修复、转码等操作。 MKVToolNix :MKVToolNix是一款开源的多媒体容器格

    2024年02月15日
    浏览(47)
  • 谈谈:你在工作中用到的设计模式!

    Hello 大家龙年好! 春节的假期转眼间过去,我们也要回归往日的节奏 因为最近和小伙伴们聊天发现,我们普遍在面试中,对被问起 设计模式 在工作中的应用,既有点熟悉,又有点陌生, 在网上看吧,又感觉 鸡肋 (为啥?不能解燃煤之急啊! 哈哈),所以,为了打破这一尴尬的窘境,我亲自针

    2024年02月20日
    浏览(25)
  • 工作中用到的数通、安全的查询、工具、文档链接

    感觉有用的就会补充进去,有推荐可以发评论区 华为序列号查询 https://support.huawei.com/enterprise/ecareWechat 华为设备信息速查 https://info.support.huawei.com/info-finder/search-center/zh/enterprise/switch 华为数通产品解决方案案例 https://forum.huawei.com/enterprise/zh/thread/634081358710194176 华为交换机命名

    2024年02月04日
    浏览(32)
  • 设计模式的分类及Spring中用到的设计模式

    在《设计模式:可复用面向对象软件的基础》(Design Patterns: Elements of Reusable Object-Oriented Software)一书中,提出了 23 种设计模式,通常称为 GoF(Gang of Four)设计模式。这些设计模式被分为以下三种类型: 创建型模式(Creational Patterns): 工厂方法模式(Factory Method Pattern) 抽象

    2024年02月22日
    浏览(31)
  • 1902_野火FreeRTOS教程内核在STM32中用到的2个中断PENDSV和SYSTICK

    全部学习汇总:  g_FreeRTOS: FreeRTOS学习笔记 (gitee.com) 上面是涉及到的源代码,而这次需要分析的就是78、79行的两个中断。首先,需要确认NVIC_SYSPRI2寄存器的作用。 进一步看里面相关的定义,从这里看这个注释与代码出现了不一致的地方。也就是这个 0xe000ed20地址究竟是哪一

    2024年02月21日
    浏览(30)
  • 工作中常用到的一些sql脚本

    – 存储过程查询(存储过程/函数 查询) select * from pg_proc where lower(prosrc) like ‘%%’; – 复制表数据 insert into 表(字段) select 字段 from 表 where 条件; – 查询重复数据 select COUNT(0),字段名 from 表名 where state = ‘E’ GROUP BY 字段名 HAVING COUNT(0) 1; – 表所属库 ALTER TABLE

    2024年04月26日
    浏览(19)
  • 我们在SqlSugar开发框架中,用到的一些设计模式

    我们在《SqlSugar开发框架》中,有时候都会根据一些需要引入一些设计模式,主要的目的是为了解决问题提供便利和代码重用等目的。而不是为用而用,我们的目的是解决问题,并在一定的场景下以水到渠成的方式处理。不过引入任何的设计模式,都会增加一定的学习难度,

    2024年02月21日
    浏览(33)
  • Mars3d项目启动上的一些坑

    最近新入职了一家公司,公司新开了有个未来城市的项目,需要用到3D城市建模,公司老总选了Mars3d作为前端框架,项目分给我了,又是一个全新的领域,开搞吧! 下面是自己遇到的几个小问题,记录一下: 1 npm install copy-webpack-plugin --save -dev 时报错 解决办法:npm install cop

    2024年02月05日
    浏览(31)
  • 分享一些常用的数据库结构表和字段语句(BI系统数据源部分可能会用到)

    获取该数据库的表(表名,行数,表注释) 获取该表的字段信息(字段名,字段类型,字段注释) 获取该数据库的表(表名,行数,表注释) 获取该表的字段信息(字段名,字段类型,字段注释) 获取该数据库的表(表名,行数,表注释) 获取该表的字段信息(字段名,

    2024年02月15日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包