天气与日历 切换到窄版

 找回密码
 立即注册
中国膜结构网
十大进口膜材评选 十大国产膜材评选 十大膜结构设计评选 十大膜结构公司评选
查看: 58|回复: 0

arx 点集计算

[复制链接]

该用户从未签到

主题

0

回帖

2912

积分

管理员

积分
2912
发表于 2024-6-22 09:46:18 | 显示全部楼层 |阅读模式
[code]int pointSortByX(const void *p1, const void *p2){
        return ((AcGePoint3d*)p1)->x - ((AcGePoint3d*)p2)->x;}

int pointSortByY(const void *p1, const void *p2){
        return ((AcGePoint3d*)p1)->y - ((AcGePoint3d*)p2)->y;}

void sortPoints(AcGePoint3dArray allIntersPts)
{
        /*the first two elements are the start and endpoints. Use them to determine
        if the array should be sorted by x or y values. */
       
        double distInX = abs(allIntersPts.at(0).x - allIntersPts.at(1).x);
        double distInY = abs(allIntersPts.at(0).y - allIntersPts.at(1).y);
       
        //if the line is more vertical, then sort by the y-coords
        if(distInY > distInX)
                std::qsort(allIntersPts.asArrayPtr(), allIntersPts.length(), sizeof(AcGePoint3d), pointSortByY);
        //else the line is more horizontal, then sort by the x-coords
        else
                std::qsort(allIntersPts.asArrayPtr(), allIntersPts.length(), sizeof(AcGePoint3d), pointSortByX);
        return;
}


AcGePoint3dArray allIntersPts;
/*code to append some points*/
acutPrintf(_T("\nBefore sort:"));
                for(int i = 0; i < allIntersPts.logicalLength(); i++)
                        acutPrintf(_T("\n%d: %.3f, %.3f"), i, allIntersPts.at(i).x, allIntersPts.at(i).y);

sortPoints(allIntersPts);

acutPrintf(_T("\nAfter sort:"));
                for(int i = 0; i < allIntersPts.logicalLength(); i++)
                        acutPrintf(_T("\n%d: %.3f, %.3f"), i, allIntersPts.at(i).x, allIntersPts.at(i).y);[/code]

 

 

 

 

arx 点集计算
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|中国膜结构网|中国膜结构协会|进口膜材|国产膜材|ETFE|PVDF|PTFE|设计|施工|安装|车棚|看台|污水池|中国膜结构网_中国空间膜结构协会

GMT+8, 2024-11-1 15:35 , Processed in 0.131602 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表