来,来,来,一个偏向数学方面的问题

mintlinda 2008-11-28 07:14:49
用DrawArc(Pen,int,int,int,int,int,int)画了一条圆弧,我知道它的起点坐标和终点坐标,我想求这条圆弧上离终点坐标很近的一个点的坐标(很接近就可以,但必须是这条圆弧上面的),如何实现??
...全文
110 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
mintlinda 2008-11-29
  • 打赏
  • 举报
回复
8楼给出了我原来的想法想要的答案,10楼则给了一个更完美的解决方案,真想把分加一倍平分给你们
gomoku 2008-11-29
  • 打赏
  • 举报
回复
...不是,我就是想要求这点,然后求通过这两点直线的斜率,因为我要在这条直线上画个小三角?
用相邻的离散点来求斜率误差很大,建议不要用这种思路。有兴趣的话你可从弧线函数入手。

如果要画小三角则很容易。
GDI+的画笔可以指定起点和终点的形状,比如pen.EndCap = LineCap.ArrowAnchor就在线段的终点画了一个小箭头。

如果小箭头或其他内置的形状不满足你的需求,还可以自定义线头和线尾的形状:


// 创建一个自定义的形状
GraphicsPath arrowPath = new GraphicsPath();
arrowPath.AddLine(new Point(-2, -3), new Point(0, 0));
arrowPath.AddLine(new Point(0, 0), new Point(+2, -3));

// 创建画笔,并指定线尾的形状。
Pen pen = new Pen(Color.DarkCyan, 3);
pen.EndCap = LineCap.Custom;
pen.CustomEndCap = new CustomLineCap(null, arrowPath);

// 画弧
e.Graphics.DrawArc(pen, 0,0,100,200, 45, 270);
mjjzg 2008-11-28
  • 打赏
  • 举报
回复
用C#还真没写过这样的东西
slimfeng 2008-11-28
  • 打赏
  • 举报
回复
(1)三个点坐标带入方程(x-a)2+(y-b)2=r2,可以求出a、b、r;
(2)求经过圆心坐标、终点坐标的线的斜率k;
(3)(假设k不是无穷大或0)可以得出经过终点的弧的切线方程:y-y3=-1/k(x-x3);
画小三角的位置可以依此线确定。
mintlinda 2008-11-28
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 hztltgg 的回复:]
这样的话你应该先有自己的弧线函数,然后根据这个弧线函数得到DrawArc(Pen,int,int,int,int,int,int)需要的点和终点的斜率。

或者根据画图函数的点求得弧线函数,然后得到终点的斜率,这个还真是数学问题,查查数学书和计算机图形学看看吧
[/Quote]
自己的弧线函数?这个难度大点
hztltgg 2008-11-28
  • 打赏
  • 举报
回复
这样的话你应该先有自己的弧线函数,然后根据这个弧线函数得到DrawArc(Pen,int,int,int,int,int,int)需要的点和终点的斜率。

或者根据画图函数的点求得弧线函数,然后得到终点的斜率,这个还真是数学问题,查查数学书和计算机图形学看看吧
mintlinda 2008-11-28
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 hztltgg 的回复:]
你是想知道那个点上在终点坐标的上面、下面、左边、右边的意思?

画好了,在终点坐标的周围八个点分别取颜色看看好了,那个变了就是那个
[/Quote]
不是,我就是想要求这点,然后求通过这两点直线的斜率,因为我要在这条直线上画个小三角?
hongzao 2008-11-28
  • 打赏
  • 举报
回复
楼上的这个方法不失为一个可行的方法
hztltgg 2008-11-28
  • 打赏
  • 举报
回复
你是想知道那个点上在终点坐标的上面、下面、左边、右边的意思?

画好了,在终点坐标的周围八个点分别取颜色看看好了,那个变了就是那个
hongzao 2008-11-28
  • 打赏
  • 举报
回复
有点难度哦.计算机里的曲线不是连续的.非要求的在圆弧上貌似不行.允许误差一两个像素的话,也许还行.
hhhh63 2008-11-28
  • 打赏
  • 举报
回复
很近是什么意思?起点终点不是有了吗?

111,130

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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