高分求凸度弧的算法

sosolife 2003-05-27 04:34:31
已知弧上两点、弧的凸度及弧的走向(顺时针或逆时针)
求弧的起始角度、终止角度及圆心位置

注意:根据弧的走向 解是唯一的!
我现在求出了两个解 不知道哪一个才是正确的
...全文
299 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
sosolife 2003-06-05
  • 打赏
  • 举报
回复
谢谢 成功了 虽然你的代码没有直接用上 但根据你的提示我看懂了方法
给分!!!
alphapaopao 2003-06-05
  • 打赏
  • 举报
回复
呵呵,恭喜,恭喜,你可能只是在一个关键点卡住了
sosolife 2003-06-03
  • 打赏
  • 举报
回复
我按你的方法试了一下 半径计算出来是正确的 但起始角和终止角好像有点问题 另外 N = !N是什么意思 我没看懂 希望能说明一下
alphapaopao 2003-06-03
  • 打赏
  • 举报
回复
“是量的单位化”
矢量的单位化
alphapaopao 2003-06-03
  • 打赏
  • 举报
回复
是量的单位化,不改变矢量的方向,把矢量的长度变成单位长度1。

N = N / sqrt(N.x*N.x + N.y*N.y);
sosolife 2003-06-03
  • 打赏
  • 举报
回复
能解释一下“单位化”的意思吗?
alphapaopao 2003-06-03
  • 打赏
  • 举报
回复
============================================================================
提问题时标题要简明扼要地说明问题内容,切忌使用"急","求救"之类不能说明问题的标题
http://alphasun.betajin.com/ 遇到问题可以给我发消息,给我发信息时请附带原帖地址
DocWizard C++程序文档自动生成工具 | Wave OpenGL | HttpProxy | AjaxParser词法分析
alphapaopao 2003-06-03
  • 打赏
  • 举报
回复
N = !N 是单位化,很重要的哦!!
alphapaopao 2003-06-02
  • 打赏
  • 举报
回复
for (jl=1L; jl<numpathsegs; jl++)
{
adReadBlob2Double(bcptr,vertpt);
p2.x = vertpt[0]; p2.y = vertpt[1];
Local2World(&p2);

if(p1!=p2)
{
// arc, 有 bulgespresent 就是圆弧
if(bulgespresent && !SGeomTool::CoordCoincide(bulge, 0))
{
D = Len(p1-p2);
d = ABS(bulge)*D/2;
radius = (d*d + D*D/4)/d/2;
pntMid = (p1+p2)/2;
tao = p2-p1;
N.x = -tao.y;
N.y = tao.x;
N = !N;
if(bulge<0)
N = -N;
pntCenter = N*(radius-d) + pntMid; // 圆心
tao = p1-pntCenter;
startangle = atan2(tao.y, tao.x); // 起始角
tao = p2-pntCenter;
endangle = atan2(tao.y, tao.x); // 终止角
PathAddArc(pPath, &pntCenter, radius, startangle, endangle, bulge>0); // 得到一条圆弧,保存起来
}
// line
else
{
PathAddLine(pPath, &p1, &p2);
}
}

p1 = p2;
if (bulgespresent)
{
adReadBlobDouble(bcptr,&bulge);
}
}
sosolife 2003-06-02
  • 打赏
  • 举报
回复
alphapaopao(炮炮) 能不能帮忙找找代码 分还可以加 反正我很少提问 要这么多分也没用
alphapaopao 2003-06-01
  • 打赏
  • 举报
回复
猜到就是这个。
我做过,但是代码没在身边啊
lrzhou 2003-06-01
  • 打赏
  • 举报
回复
可以根据弧上两点的中点到圆心的直线与弧上两点直线的角度判断知道哪一个才是正确的。
sosolife 2003-05-31
  • 打赏
  • 举报
回复
在AutoCAD中对于凸度弧是这样描述的:
指令格式:0C,x,y,bulge
其中0C代表这是一条凸度弧指令。
x、y代表弧的位移量(例:当弧的起点为(a,b)时 终点就为(a+x,b+y));
bulge代表弧的凸度。

x、y的位移变化范围为-127到+127,用于指出弧的曲度的凸起度(bulge)其变化范围也是从-127到+127
如果位移量所指定的线段长度为D,线段中点的垂直高度为H,则凸起度为(2*H/D)*127)。如果弧从当前位置到新的位置是顺时针方向,则符号为负。

注:半圆的凸度为127(或-127)。凸度为零的弧表示直线。

我想我解释清楚了 希望有人能帮忙 应该不是很难的问题
alphapaopao 2003-05-30
  • 打赏
  • 举报
回复
"弧的凸度" 是不是弦偏距?
HUNTON 2003-05-27
  • 打赏
  • 举报
回复
弧的凸度是怎么算的啊?

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧