社区
图形处理/算法
帖子详情
高分求助!用求逼近点的方法,画椭圆和圆弧。
hardstudylulin
2003-02-20 01:08:20
不用CDC类库中的画椭圆和圆弧的函数来画,而是求出椭圆和圆上的逼近点,然后连接各个逼点形成椭圆和圆弧!
如有算法或现成的例子,请发到:hardlulin@163.com
万分感谢!
...全文
72
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
打赏
举报
回复
这个我能帮你查一下,现在我也在研究这个方向。
Silverlight 计算机图形学1 基础
第一:线(通过斜率 线上两个坐标确定线)
画
斜率0≤k≤1的直线的Bresenham
画
线算法的C语言程序: void BresenhamLine (int x0, int y0, int x1, int y1, long color) { int x, y, dx, dy; float k, e; dx = x1-...
计算机图形学-基本图形生成算法
圆弧
扫描转换 实区域填充 图形的剪裁 图形反走样 消隐 光栅化算法 线段光栅化算法 DDA算法 中
点
Bresenham
画
线算法 Bresenham改进算法 圆光栅化算法 中
点
算法 中
点
整数算法 中
点
整数优化...
第四章 图形思维的起
点
-朴素的软光栅 - 华科
软光栅:图元到像素
点
转换,不借助硬件提供的API,直接用应用程序进行计算。 本章学习最基本的图形扫描转换算法:
点
直线 圆
椭圆
多边形 约定 像素
点
阵的坐标系,左下角为原
点
。 直线扫描转换算法 数值微分...
计算机图形学 | 图形思维的起
点
——朴素的软光栅
点
输入:
点
的坐标 输出:像素
点
的位置 直线 输入:直线两个端
点
的坐标P0(x0,y0)和P1(x1,y1) 输出:最佳
逼近
这条直线的像素
点
集 高质量直线的要求: 直线要直,不能有锯齿效果 直线的端
点
要准确,即无定向性和断裂...
计算机图形学课程总结
– 包括自然景物、拍摄到的图片等,可用用数学
方法
描述 构成图形的要素: – 几何要素:刻
画
对象的轮廓、形状等 – 非几何要素:刻
画
对象的颜色、纹理等 计算机中表示图形的
方法
点
阵表示 • 枚举出图形中...
图形处理/算法
19,468
社区成员
50,698
社区内容
发帖
与我相关
我的任务
图形处理/算法
VC/MFC 图形处理/算法
复制链接
扫一扫
分享
社区描述
VC/MFC 图形处理/算法
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章