社区
图形处理/算法
帖子详情
高分求助!用求逼近点的方法,画椭圆和圆弧。
hardstudylulin
2003-02-20 01:08:20
不用CDC类库中的画椭圆和圆弧的函数来画,而是求出椭圆和圆上的逼近点,然后连接各个逼点形成椭圆和圆弧!
如有算法或现成的例子,请发到:hardlulin@163.com
万分感谢!
...全文
93
4
打赏
收藏
高分求助!用求逼近点的方法,画椭圆和圆弧。
不用CDC类库中的画椭圆和圆弧的函数来画,而是求出椭圆和圆上的逼近点,然后连接各个逼点形成椭圆和圆弧! 如有算法或现成的例子,请发到:hardlulin@163.com 万分感谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
hailong0108
2003-02-21
打赏
举报
回复
椭圆用这个方程:
x(t) = (ax* t*t + bx * t + cx)/(1 + t*t)
y(t) = (ay* t*t + by * t + cy)/(1 + t*t)
t[0,1];的参数
cx = x0;
cy = y0;
bx = -2*x0 + 2* x1;
by = -2*y0 + 2* y1;
ax = x0 -2*x1 + 2*x2;
ay = y0 -2*y1 + 2*y2;
第一点 x0,y0;
第二点 x1,y1;
第三点 x2,y2;
hailong0108
2003-02-21
打赏
举报
回复
用这个方程:
先定出每一段的长度。由半径及长度就可求出每次所转的角度, 在做个函数求每一点绕圆心旋转所成的点;
大体思路就是这样的。你在整理一下。
我给你一个旋转函数。
/**********************************************************************************
名称: Rotate()
时间: 2003.1.20
参数: point1 要转的点,pointCenter 旋转中心。Angle 旋转角(弧度) + 为逆时针 - 顺时针
返回值:point
说明: 求绕某点的旋转点
/************************************************************************************/
void Rotate(CPoint point1,CPoint pointCenter,double Angle,CPoint& point)
{
Angle = Angle*180/3.1415926;
double O1,O;
O1=atan(fabs((double)(point1.y - pointCenter.y)/(point1.x - pointCenter.x)));//#include <math.h>
//判断两点的相对位置
//在坐标轴上的情况
if(point1.y == pointCenter.y && point1.x > pointCenter.x) //0度角
{
O1 = 0;
}
else if(point1.y > pointCenter.y && point1.x == pointCenter.x) //90度角
{
O1 = 90;
}
else if(point1.y == pointCenter.y && point1.x < pointCenter.x) //180度角
{
O1 = 180;
}
else if(point1.y < pointCenter.y && point1.x ==pointCenter.x) //270度角
{
O1 = 270;
}
else if(point1.x > pointCenter.x && point1.y > pointCenter.y) //the first quadrant
{
O1 = O1*180/3.1415926;
}
else if(point1.x < pointCenter.x && point1.y > pointCenter.y) //the secondly quadrant
{
O1 = 180-O1*180/3.1415926;
}
else if(point1.x < pointCenter.x && point1.y < pointCenter.y) //the third quadrant
{
O1= 180+O1*180/3.1415926;
}
else //the forthly quadrant
{
O1= 360-O1*180/3.1415926;
}
double L=sqrt((point1.x - pointCenter.x)*(point1.x - pointCenter.x)+(point1.y - pointCenter.y)*(point1.y - pointCenter.y));
O=(O1-Angle)/180*3.1415926;
point.x = (long)(pointCenter.x + L*cos(O));//加入#include <math.h>
point.y = (long)(pointCenter.y + L*sin(O));
}
zswzwy
2003-02-20
打赏
举报
回复
这个吗,。。。我也不清楚,搜一下吧。
hailong0108
2003-02-20
打赏
举报
回复
这个我能帮你查一下,现在我也在研究这个方向。
深入解析
椭圆
中
点
Bresenham算法
在数学中,
椭圆
的定义是平面上到两个固定
点
(焦
点
)距离之和为常数的
点
的集合。这种定义在计算机图形学中转换为一般方程,可以表示为:其中,(a) 和 (b) 分别是
椭圆
的水平和垂直半轴长度,且 (a \geq b)。一般情况下,(a) 表示
椭圆
长轴的一半,(b) 表示短轴的一半。在笛卡尔坐标系中,当 (a = b) 时,
椭圆
变成一个圆。
基于MFC的
圆弧
绘制算法设计与实现
为了提升图形表现力,允许用户自定义
圆弧
颜色是一项重要扩展功能。MFC提供了类,封装了标准的颜色选择对话框,便于快速集成。public:可在角度计算溢出、半径过大导致整数溢出等情况抛出自定义异常。HW4示例项目基于MFC对话框应用程序框架构建,采用经典的文档/视图分离结构(尽管在对话框中未显式使用),其核心逻辑围绕用户输入驱动图形重绘机制展开。整个执行流程如下:程序启动,CWinApp派生类初始化并创建主对话框窗口。
精美C#动
画
登录窗口设计与实现
C#作为一种现代、类型安全的面向对象编程语言,广泛应用于Windows桌面应用开发。其中,登录窗口是大多数应用程序的入口界面,不仅承担身份验证功能,更是用户对软件的第一印象来源。一个具备流畅动
画
效果和良好交互体验的登录窗体,能显著提升产品的专业感与用户体验。创建一个新的窗体,设置其,并通过定时器实现淡入淡出效果。op >= 0;关键
点
分析:Opacity属性控制透明度,实现渐变效果;使用Task.Delay避免阻塞UI线程;
计算机图形学-基本图形生成算法
基本图形生成算法 图元扫描转换 直线段扫描转换
圆弧
扫描转换 实区域填充 图形的剪裁 图形反走样 消隐 光栅化算法 线段光栅化算法 DDA算法 中
点
Bresenham
画
线算法 Bresenham改进算法 圆光栅化算法 中
点
算法 中
点
整数算法 中
点
整数优化算法 直线的扫描转换: 最佳
逼近
于该直线的一组象素;按扫描线顺序,对这些象素进行写操作 一、直线段的生成 1.DDA算法 原理:直线的一阶...
Qt中QPainter基础图形绘制技术详解与实战
drawArc()和用于绘制
椭圆
的一部分,广泛应用于仪表盘、进度环等控件。函数签名:startAngle:起始角度,逆时针方向,单位为1/16°(即16表示1°)spanAngle:跨越角度,正值表示逆时针,负值顺时针虽然内置线型能满足多数需求,但某些专业场景(如工程图纸、医疗波形图)需要特定节奏的虚线。此时需使用。参数pattern是一个交替序列:[
画
线长度, 空白长度,
画
线长度, …],单位为“用户坐标系下的距离”。
图形处理/算法
19,467
社区成员
50,678
社区内容
发帖
与我相关
我的任务
图形处理/算法
VC/MFC 图形处理/算法
复制链接
扫一扫
分享
社区描述
VC/MFC 图形处理/算法
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章