基本上我试图建模一些具有以下格式的地图画笔:
每个画笔定义一个实心区域。画笔将此区域定义为四个或更多平面的交点。每个平面由三个非共线点定义。这些点必须顺时针方向:
1--2-----------------> | 3 | | | | | ,
每个画笔语句如下所示:
{ ( 128 0 0 ) ( 128 1 0 ) ( 128 0 1 ) GROUND1_6 0 0 0 1.0 1.0 ( 256 0 0 ) ( 256 0 1 ) ( 256 1 0 ) GROUND1_6 0 0 0 1.0 1.0 ( 0 128 0 ) ( 0 128 1 ) ( 1 128 0 ) GROUND1_6 0 0 0 1.0 1.0 ( 0 384 0 ) ( 1 384 0 ) ( 0 384 1 ) GROUND1_6 0 0 0 1.0 1.0 ( 0 0 64 ) ( 1 0 64 ) ( 0 1 64 ) GROUND1_6 0 0 0 1.0 1.0 ( 0 0 128 ) ( 0 1 128 ) ( 1 0 128 ) GROUND1_6 0 0 0 1.0 1.0 }
当你第一次看到它时,这可能只是有点混乱。它定义了一个从(128,128,64)延伸到(256,384,128)的矩形区域。以下是单行的含义:
( 128 0 0 ) ( 128 1 0 ) ( 128 0 1 ) GROUND1_6 0 0 0 1.0 1.0 1st Point 2nd Point 3rd Point Texture
我需要找到交点,这样我才能使用可以在3d空间中绘制2d面板的方法绘制形状。 以下代码将在空间中绘制一个三角形,例如:
beginShape(); vertex(x0,y0,z0); vertex(x1,y1,z1); vertex(x2,y2,z2); vertex(x0,y0,z0); endShape();
答案 0 :(得分:0)
http://mathworld.wolfram.com/Plane-PlaneIntersection.html
这是你如何找到三个平面相交的地方。既然你没有在4dim工作(这是游戏,对吗?我们在3D中看到),那么这里给出的3平面解决方案就足够了。
答案 1 :(得分:0)
没有。我一直在寻找非平凡的 伪代码找到所有交集 有些可以在N平面上的点 平行和其他没有,但为此 飞机和它们的交叉点 创建一个2球形拓扑。
非平凡的伪代码可能是a)某人已经解决了这个问题,你只是处于代码重用模式,或者b)他们正在为你解决问题。
或者c)这是一个数学问题而不是编程问题。你有没有咨询过任何数学教授的帮助?有一个数学stackoverflow属性(我认为两个!)
我知道快速找到交点的唯一方法是将矢量导入我之前链接的公式中。这会很快给你交叉点。您已经获得了计算此信息所需的所有位数。
How to know if a line intersects a plane in C#? - Basic 2D geometry
和