84669 Lernen von Personen
152542 Lernen von Personen
20005 Lernen von Personen
5487 Lernen von Personen
7821 Lernen von Personen
359900 Lernen von Personen
3350 Lernen von Personen
180660 Lernen von Personen
48569 Lernen von Personen
18603 Lernen von Personen
40936 Lernen von Personen
1549 Lernen von Personen
1183 Lernen von Personen
32909 Lernen von Personen
Welche mathematische Formel wird verwendet?
计算几何中挺常见的题目
有△ABC,以及点O(x, y),设三角形顶点坐标为:A(x1,y1)、B(x2,y2)、C(x3,y3)
△ABC
O(x, y)
点O在△ABC中,点O和点C在直线AB的同一侧,则有:
[(x-x1)(y2-y1) - (y-y1)(x2-x1)][(x3-x1)(y2-y1) - (y3-y1)(x2-x1)] > 0
同理,点O和点B在直线AC的同一侧;点O和点A在直线BC的同一侧。
满足以上三个条件,点O就在△ABC内。
个人比较喜欢这个方法,因为只含有四则运算和大小判断,不涉及三角函数和平方开方等运算,速度较快。如果有更好的方法,欢迎指教。
可以通过 Barycentric coordinate system (重心坐标)去处理。参考链接:https://en.wikipedia.org/wiki...
设要测试的点为 (x0, y0),三角形三点分别为 (x1, y1),(x2, y2),(x3, y3)
根据重心坐标的定义:
x0 = a * x1 + b * x2 + c * x3 y0 = a * y1 + b * y2 + c * y3 a + b + c = 1
其中 a b c 分别为三个系数。当且仅当 a b c 均大于等于 0 且小于等于 1 时,点 (x0, y0) 在由点 (x1, y1)、点 (x2, y2) 和点 (x3, y3) 构成的三角形内。
由上面的定义可得出 a b c 的解:
a = ((y2 - y3)*(x0 - x3) + (x3 - x2)*(y0 - y3)) / ((y2 - y3)*(x1 - x3) + (x3 - x2)*(y1 - y3)) b = ((y3 - y1)*(x0 - x3) + (x1 - x3)*(y0 - y3)) / ((y2 - y3)*(x1 - x3) + (x3 - x2)*(y1 - y3)) c = 1 - a - b
写成 JS 方法:
function pointInTriangle(x0, y0, x1, y1, x2, y2, x3, y3) { var pisor = (y2 - y3)*(x1 - x3) + (x3 - x2)*(y1 - y3); var a = ((y2 - y3)*(x0 - x3) + (x3 - x2)*(y0 - y3)) / pisor; var b = ((y3 - y1)*(x0 - x3) + (x1 - x3)*(y0 - y3)) / pisor; var c = 1 - a - b; return a >= 0 && a <= 1 && b >= 0 && b <= 1 && c >= 0 && c <= 1 }
这还不简单比如x点 三角形 a、b、c三个角x为一个角的顶点 如果axb bxc cxa 三个角和是360度 那么 x点在三角形内
很多文章的 搜索一下咯http://www.cnblogs.com/baie/a...
计算几何中挺常见的题目
有
△ABC
,以及点O(x, y)
,设三角形顶点坐标为:A(x1,y1)、B(x2,y2)、C(x3,y3)点O在△ABC中,点O和点C在直线AB的同一侧,则有:
同理,点O和点B在直线AC的同一侧;点O和点A在直线BC的同一侧。
满足以上三个条件,点O就在△ABC内。
个人比较喜欢这个方法,因为只含有四则运算和大小判断,不涉及三角函数和平方开方等运算,速度较快。如果有更好的方法,欢迎指教。
可以通过 Barycentric coordinate system (重心坐标)去处理。
参考链接:https://en.wikipedia.org/wiki...
设要测试的点为 (x0, y0),三角形三点分别为 (x1, y1),(x2, y2),(x3, y3)
根据重心坐标的定义:
其中 a b c 分别为三个系数。当且仅当 a b c 均大于等于 0 且小于等于 1 时,点 (x0, y0) 在由点 (x1, y1)、点 (x2, y2) 和点 (x3, y3) 构成的三角形内。
由上面的定义可得出 a b c 的解:
写成 JS 方法:
这还不简单
比如x点 三角形 a、b、c三个角
x为一个角的顶点 如果
axb bxc cxa 三个角和是360度 那么 x点在三角形内
很多文章的
搜索一下咯
http://www.cnblogs.com/baie/a...