我一直有一些问题,实现我的窄相位碰撞检测。布罗德工作得很好。
我有一组多边形,它们有一个按顺时针顺序排列的点的矢量数组。每一个周期,我都会检查它们是否在碰撞。
我从中借用了多边形测试中的以下点,并使用我的Point数据结构对其进行了更改:
int InsidePolygon(std::vector <Point> poly, Point p) {
int i, j, c = 0;
int nvert = poly.size();
for (i = 0, j = nvert-1; i < nvert; j = i++) {
if ( ((poly[i].
我试着找到圆圈的面积,发现了一个垃圾值。我使用的是一个gcc编译器。
圆的面积
#include<stdio.h>
void main()
{
int a=1;
float c;
c = 22/7 * a * a;
printf("%f is the area" , c);
}
3.142857是应该输出的区域。但它显示的是3.000000的区域
我有多边形集。在这个集合中,有些是外部多边形,有些可能(或不可能)是洞。在这个阶段,我不知道什么是多边形孔。我想要计算最后的多边形组合所有多边形,包括洞。
我想到了这种方法:
//'SomeLib' that has polygon boolean fucntions
var polygonSet = [poly1,poly2,...polyn];
var union, intersection;
var combinedPoly = SomeLib.XOR(polygonSet[0], polygonSet[1]);
for( var i=2; i<polygonS
我正在尝试这个问题,并找到了一个解决办法:
在每个点的右边画一条水平线,并把它延伸到无穷大。
1)计算直线与多边形边相交的次数。
( 2)点在多边形内部,如果交点计数为奇数,或点位于多边形边缘。如果没有一个条件是正确的,那么点就在外面。
但我认为有一个简单的解决办法:
(各方面按同一顺序排列)
找出三点的向量积(每边给定的点和端点)
if all products are > or < 0 : point lies inside polygon or on boundary
else outside
我的解决方案不是更好更有效吗?
还有比这更简单的算法吗?
在计划中编写我的代码时,
申请:不是程序;
期望一个可应用于参数的过程
给予:1
就会出现。我应该用Heron公式来计算三角形面积的公式。
这是我的代码:
(define (s a b c)
(/ (+ a b c) 2))
(define (area a b c)
((sqrt (*(- (s a b c)(a))
(-(s a b c)(b))
(-(s a b c)(c)))
)))
同样,输出是:
申请:不是程序;
期望一个可应用于参数的过程
给予:1
论点.:没有