【计算几何代码01-B】

该代码实现了一个判断点是否在三角形内的函数以及找出给定点集中极点的算法。通过计算向量叉积来确定点的位置关系,对每个点进行O(n^3)的时间复杂度遍历,更新其是否为极点的标记。
摘要由CSDN通过智能技术生成
bool InTriangle( Point p, Point q, Point r, Point s )
bool pqLeft = ToLeft( p, q, s );
bool qrLeft = ToLeft( q, r, s );
bool rpLeft = ToLeft( r, p, s );
return ( pqLeft == qrLeft ) && ( qrLeft == rpLeft );
extremePoint( Point S[], int n ) //n > 2
for ( int s = 0; s < n; s++) S[s].extreme = TRUE;
for ( int p = 0; p < n; p++ ) //O(n)
for ( int q = p + 1; q < n; q++ ) //O(n)
for ( int r = q + 1; r < n; r++ ) //O(n)
for ( int s = 0; s < n; s++ ) { //O(n)
if ( s==p || s==q || s==r || !S[s].extreme )
continue;
if ( InTriangle( S[p], S[q], S[r], S[s] ) )
S[s].extreme = FALSE;
bool ToLeft( Point p, Point q, Point s )
return Area2( p, q, s ) > 0;int Area2( Point p, Point q, Point s )
return
p.x * q.y - p.y * q.x
+ q.x * s.y - q.y * s.x
+ s.x * p.y - s.y * p.x;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lst0426

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值