几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量  


返回   几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量 » 仿射空间:CAX软件开发(三)二次开发与程序设计 » CAD二次开发 » AutoCAD二次开发 » ObjectARX(C++)
用户名
密码
注册 帮助 会员 日历 银行 搜索 今日新帖 标记论坛为已读


回复
 
主题工具 搜索本主题 显示模式
旧 2009-04-19, 03:24 PM   #1
yang686526
高级会员
 
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
yang686526 向着好的方向发展
默认 【转帖】高手帮个啊忙啊

高手帮个啊忙啊
高手帮个啊忙啊
本人第一次编的程序,出现了连接错误,想了几天得不到答案,高手帮忙啊,谢了,急!!!!!!!!!!!!
#include "math.h"
//#include"gept2dar.h"
#include"geline2d.h"
//#include"acarray.h"
#include"gepnt2d.h"
#include"gelnsg2d.h"
//以下为计算凸多边形面积方法
double areaofchimb(acgepoint2darray&ptarr)
{
acgepoint2d *p=&ptarr.at(0);
int i;
int n;//点的个数

n=ptarr.length();
acgepoint2d startpoint=ptarr.first();
acgepoint2d endpoint=ptarr.last();
//求顶点到其余点的对角线长
double*arry=new double[n-3];
for(i=0;i<n-3;i++)
// arry[i]=(ptarr.at(0)).distanceto(ptarr.at(i+2));
arry[i]=ptarr[0].distanceto(ptarr[i+2]);
//求面积
double area=0;
int j=0;
for(j=0;j<n-2;j++)
{ double a;
a=startpoint.distanceto(ptarr[j+1]);
// a=ads_distance(ptarr[0],ptarr[j+1]);
double b;
b=(ptarr[j+1]).distanceto(ptarr[j+2]);
// b=ads_distance(ptarr[j+1],ptarr[j+2]);
double d;
if (j<n-3)
d=arry[j];
else
d=startpoint.distanceto(endpoint);
// d=ads_distance(ptarr[0],ptarr[n-1]);
double c=(a+b+d)/2;
double s=sqrt(c*(c-a)*(c-b)*(c-d));
area+=s;
}
return area;
}
//计算多边形面积 !!需要修改,补凸的时候可能使临近两点变凹
double area(acgepoint2darray &ptarr)
{
bool pointinpolygon(acgepoint2d& pt,acgepoint2darray &ptarr);
double areaoftriangle(acgepoint2d ,acgepoint2d,acgepoint2d );
int n;//点的个数
n=4;
ptarr.at(0).set(10,10);
ptarr.at(1).set(10,20);
ptarr.at(2).set(20,20);
ptarr.at(3).set(20,10);
double area=0;
double s=0;
int i;
for(i=0;i<n;i++)
{double s=0;
acgepoint2d*ppt=new acgepoint2d(ptarr.at(i));
ptarr.removeat(i);
bool flag;
flag=pointinpolygon(*ppt,ptarr);
if(flag==true) ptarr.insertat(i,*ppt);
else
{acgeline2d*line=new acgeline2d(ptarr.at((i-1+n-1)%(n-1)),ptarr.at((i+n-1)%(n-1)));

acgepoint2d newpoint=(*ppt).mirror(*line);
ptarr.insertat(i,newpoint);
s=s-2*(areaoftriangle(ptarr.at((n+i-1)%n),ptarr.at(i),ptarr.at((n+i+1)%n)));
}
}
area=areaofchimb(ptarr);
area=area-s;
return area;
}
//以下判断点是否在多边形中,在返回false ,不在返回true
bool pointinpolygon(acgepoint2d& pt,acgepoint2darray &ptarr)
{
int n = ptarr.length();
int i, count=0;
double yup, xup, ydown, xdown;
// double y0, x0;
double t;
for( i=0; i< n; i++ )
{
if((pt.x ==(ptarr.at(i).x)&&(pt.y==ptarr.at(i).y) //!!检查括号匹配不??
|| (pt.x==(ptarr.at((i+1)%n).x))&&(pt.y==(ptarr.at((i+1)%n).y))))
return true;
xup=(ptarr.at(i)).x>(ptarr.at((i+1)%n).x)?(ptarr.at(i)).xptarr.at((i+1)%n).x);
yup=(ptarr.at(i)).y>(ptarr.at((i+1)%n).y)?(ptarr.at(i)).yptarr.at((i+1)%n).y);
xdown=(ptarr.at(i)).x<(ptarr.at((i+1)%n).x)?(ptarr.at(i)).xptarr.at((i+1)%n).x);
ydown=yup=(ptarr.at(i)).y<(ptarr.at((i+1)%n).y)?(ptarr.at(i)).yptarr.at((i+1)%n).y);
if(pt.y>yup)
continue;
if(pt.y<ydown)
continue;
if(pt.y==ydown)
if(pt.y<yup&&pt.x<xdown) count++;
else continue;
if(pt.y<yup&&pt.y>ydown)
double t=xdown+(pt.y-ydown)*(xup-xdown)/(yup-ydown);
if(t>pt.x) count++;
if(t=pt.x) return true;
}
if(count%2==0) return false;
else
return true;
}
//计算三角形面积
double areaoftriangle(acgepoint2d pt1,acgepoint2d pt2,acgepoint2d pt3)
{
double a,b,c,l,s;
a=pt1.distanceto(pt2);
b=pt2.distanceto(pt3);
c=pt3.distanceto(pt1);
l=(a+b+c)/2;
s=sqrt(l*(l-a)*(l-b)*(l-c));
return s;
}
--------------------configuration: lab5command - win32 debug--------------------
linking...
creating library debug/lab5command.lib and object debug/lab5command.exp
lab5commandmain.obj : error lnk
要包含库文件:acge15.lib(视arx的版本而定,以acge开头的)
*******************************
truetable: 在cad和excel间互导表格
支持autocad,中望cad、浩辰cad
*******************************
线材(网架,型钢,角钢)排料优化
*******************************
//www.truetable.com
if( (pt.x == (ptarr.at(i).x) && (pt.y==ptarr.at(i).y) ) //!!检查括号匹配
yang686526离线中   回复时引用此帖
GDT自动化论坛(仅游客可见)
回复


主题工具 搜索本主题
搜索本主题:

高级搜索
显示模式

发帖规则
不可以发表新主题
不可以回复主题
不可以上传附件
不可以编辑您的帖子

vB 代码开启
[IMG]代码开启
HTML代码关闭



所有的时间均为北京时间。 现在的时间是 10:06 PM.


于2004年创办,几何尺寸与公差论坛"致力于产品几何量公差标准GD&T | GPS研究/CAD设计/CAM加工/CMM测量"。免责声明:论坛严禁发布色情反动言论及有关违反国家法律法规内容!情节严重者提供其IP,并配合相关部门进行严厉查处,若內容有涉及侵权,请立即联系我们QQ:44671734。注:此论坛须管理员验证方可发帖。
沪ICP备06057009号-2
更多