社区
图形处理/算法
帖子详情
高分求助!用求逼近点的方法,画椭圆和圆弧。
hardstudylulin
2003-02-20 01:08:20
不用CDC类库中的画椭圆和圆弧的函数来画,而是求出椭圆和圆上的逼近点,然后连接各个逼点形成椭圆和圆弧!
如有算法或现成的例子,请发到:hardlulin@163.com
万分感谢!
...全文
79
4
打赏
收藏
高分求助!用求逼近点的方法,画椭圆和圆弧。
不用CDC类库中的画椭圆和圆弧的函数来画,而是求出椭圆和圆上的逼近点,然后连接各个逼点形成椭圆和圆弧! 如有算法或现成的例子,请发到:hardlulin@163.com 万分感谢!
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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
打赏
举报
回复
这个我能帮你查一下,现在我也在研究这个方向。
计算机图形学-基本图形生成算法
基本图形生成算法 图元扫描转换 直线段扫描转换
圆弧
扫描转换 实区域填充 图形的剪裁 图形反走样 消隐 光栅化算法 线段光栅化算法 DDA算法 中
点
Bresenham
画
线算法 Bresenham改进算法 圆光栅化算法 中
点
算法 中
点
整数算法 中
点
整数优化算法 直线的扫描转换: 最佳
逼近
于该直线的一组象素;按扫描线顺序,对这些象素进行写操作 一、直线段的生成 1.DDA算法 原理:直线的一阶...
第四章 图形思维的起
点
-朴素的软光栅 - 华科
软光栅:图元到像素
点
转换,不借助硬件提供的API,直接用应用程序进行计算。 本章学习最基本的图形扫描转换算法:
点
直线 圆
椭圆
多边形 约定 像素
点
阵的坐标系,左下角为原
点
。 直线扫描转换算法 数值微分算法—Digital Differential Analyzer, DDA 直接从直线微分方程生成直线的
方法
。是一种增量算法。 通过给定直线的两端
点
坐标P0(x0,y0)P_0(x_0,y_0)P0(x0,y0)和P1(x1,y1)P_1(x_1,y_1)P
OpenCV学习笔记
文章目录OpenCV基本操作读取图像显示图像保存图像waitKey()创建窗口销毁窗口图像处理基础item()itemset()通道拆分通道合并获取图像属性图像运算加法运算图像加权和按位逻辑运算位平面分解图像加密与解密数字水印色彩空间类型转换cv2.cvtColor()cv2.inRange(img, min, max)HSV色彩空间BGRA色彩空间几何变换缩放翻转仿射透视重映射阈值处理threshold()adaptiveThreshold()Otsu处理图像平滑处理均值滤波方框滤波高斯滤波中值滤波双边滤
计算机图形学 | 图形思维的起
点
——朴素的软光栅
计算机图形学 | 图形思维的起
点
——朴素的软光栅
计算机地图制图 知识总结
计算机地图制图 第一章 1. 计算机制图的概念 P1 数字地图,电子地图的概念(PPT),区分,名词解释 计算机地图制图:以传统的地图制图原理为基础,以计算机及其外围设备为工具,采用数据库技术和图形数据处理
方法
,实现地图信息的采集、存储、处理、显示和绘图的应用科学。实质: 从图形(连续)转换为数字(离散),经过一定处理,再由数字转换为图形的过程。 数字地图:一定坐标系内,空间数据 + 属性标志的...
图形处理/算法
19,473
社区成员
50,678
社区内容
发帖
与我相关
我的任务
图形处理/算法
VC/MFC 图形处理/算法
复制链接
扫一扫
分享
社区描述
VC/MFC 图形处理/算法
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章