计算机图形学——八分法中点画圆
八分法中点画圆
实现方法:从0°到45°开始画,其余部分进行求对称
1 、绘制X^2+Y^2=R^2的圆,将圆划分为⑧等份。我们从第二份开始绘制
分析:
最大位移方向是Y方向,因此令y每增加1,x不变或者减少1,我们可以令:
2 、构造判别式
分析:
将M(xi-0.5,yi+1)点代入圆的稳式方程F(x,y)=X^2+Y^2-R^2
所以d=F(M)=(xi-0.5)^2+(yi+1)^2-R^2
由图可以分析:
可知当d<0时如图所示,在圆内,所以选择Pd
当d>=0时,在圆外,所以选择Pu
3、求d的增量
分析:
当d<0时,取Pd
d1=F(M1)=(xi-0.5)^2+(yi+1)^2-R^2
d2=F(M2)=(xi-0.5)^2+(yi+2)^2-R^2
detad=d2-d1=2y+3
当d>=0时,取Pu
d1=F(M1)=(xi-0.5)^2+(yi+1)^2-R^2
d2=F(M2)=(xi-1.5)^2+(yi+2)^2-R^2
detad=d2-d1=2(yi-xi)+5
4、求d的初始值
分析:
d0=F(M0)=(R-0.5)^2+1-R^2=1.25-R
5、总结上述
分析:
d0=1.25-R
当d>=0时,取Pu:
detad=2(yi-xi)+5
x(i+1)=xi-1
y(i+1)=yi+1
当d<0时,取Pd:
detad=2y+3
x(i+1)=xi
y(i+1)=yi+1
6、matlab实现
主函数:(写的繁琐了,不过原理很简单)
clc;
clear all;
close all;
r=500;
X2=[];
Y2=[];
X1=[];
Y1=[];
d=1.25-r;
x=r;
y=0;
for i=1:r/sqrt(2)+1X2(i)=x;Y2(i)=y;if(d<0)d=d+2*y+3;x=x;y=y+1;elsed=d+2*(y-x)+5;x=x-1;y=y+1;end
end
for i=1:r/sqrt(2)+1X1(i)=xzuobiao(X2(i),Y2(i)); Y1(i)=yzuobiao(X2(i),Y2(i));
end
X3=X2;
Y3=-Y2;
X4=X1;
Y4=-Y1;
X5=-X1;
Y5=-Y1;
X6=-X2;
Y6=-Y2;
X7=-X2;
Y7=Y2;
X8=-X1;
Y8=Y1;
plot(X1,Y1);
hold on;
plot(X2,Y2);
hold on;
plot(X3,Y3);
hold on;
plot(X4,Y4);
hold on;
plot(X5,Y5);
hold on;
plot(X6,Y6);
hold on;
plot(X7,Y7);
hold on;
plot(X8,Y8);
title('R=500')
子函数:
第1区域的对称x点
function [XX]=xzuobiao(xx,yy)
syms Y X%先求垂足坐标
EQ1=(Y-yy)+(X-xx);%垂直
EQ2=X-Y;%在直线上
[XC YC]=solve(EQ1,EQ2);
XC2=double(XC);%垂足坐标
YC2=double(YC);
XX=2*XC2-xx;%利用中点公式求对称点
YY=2*YC2-yy;%利用中点公式求对称点
第1区域的对称y点
function [YY]=yzuobiao(xx,yy)
syms Y X%先求垂足坐标
EQ1=(Y-yy)+(X-xx);%垂直
EQ2=X-Y;%在直线上
[XC YC]=solve(EQ1,EQ2);
XC2=double(XC);%垂足坐标
YC2=double(YC);
XX=2*XC2-xx;%利用中点公式求对称点
YY=2*YC2-yy;%利用中点公式求对称点
7、算法效果
如有错误,欢迎指正!
计算机图形学——八分法中点画圆相关推荐
- 计算机图形学E3——OpenGL 中点画圆
其他计算机图形学实验见 链接 #include<iostream> #include<GL/glut.h> using namespace std;float bx, by, ...
- matlab八分之一中点画圆算法,中点八分画圆算法
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #include #define W 800 #define H 600 void drawCircle(SDL_Renderer* r ...
- c语言计算机图形来画八分画圆,计算机图形学:中点画圆算法
在平面解析几何中,圆的方程可以描述为(x – x0)2 + (y – y0)2 = R2,其中(x0, y0)是圆心坐标,R是圆的半径,特别的,当(x0, y0)就是坐标中心点时,圆方程可以简化为x2 ...
- 中点画圆算法----计算机图形学
圆的对称特性: 一个八分圆上的点可以映射为其余七个八分圆的点 利用圆的对称性可以减少计算量,只需要计算出一个八分之一圆上需要画的点,就可以映射出整个圆 中点画圆算法: (对于原点为(xc,yc)的圆, ...
- 【计算机图形学】小白谈计算机图形学(二)画圆篇之中点画圆法,Bresenham画圆算法,椭圆实操,线型处理详解
小白谈计算机图形学(二)画圆篇之中点画圆法,Bresenham画圆算法,椭圆实操,线型处理详解 引言 如何画圆 基本思想 中点画圆法 中点画圆基本思路 中点画圆改进 Bresenham画圆算法 Bre ...
- c语言计算机图形来画八分画圆,【计算机图形学】基本图形元素:圆的生成算法...
08年9月入学,12年7月毕业,结束了我在软件学院愉快丰富的大学生活.此系列是对四年专业课程学习的回顾,索引参见:http://blog.csdn.net/xiaowei_cqu/article/de ...
- 计算机图形学在现实中的应用,计算机图形学在实际中的应用
计算机图形学在实际中的应用 计算机图形学在实际中的应用 1963年,伊凡•苏泽兰在麻省理工学院发表了名为<画板>的博士论文,它标志着计算机图形学的正式诞生.至今已有四十多年的历史.此前的计 ...
- C语言——中点画圆算法和Bresenham画圆算法(easyx图形库)
一.中点画圆法 首先是中点画圆法,考虑圆心在原点,半径为R的圆在第一象限内的八分之一圆弧,从点(0, R)到点(R/ , R/ )顺时针方向确定这段圆弧.假定某点Pi(xi, yi)已经是该圆弧上最接 ...
- 【计算机图形学】中点画圆算法和Bresenham画圆算法
在平面解析几何中,圆的方程可以描述为(x – x0)2 + (y – y0)2 = R2,其中(x0, y0)是圆心坐标,R是圆的半径,特别的,当(x0, y0)就是坐标中心点时,圆方程可以简化为x2 ...
最新文章
- Spring内核研究-通过工厂注入
- centos修改mysql密码_WAMP下修改MYSQL数据库密码
- .NET Core 2.0 单元测试中初识 IOptionsMonitoramp;lt;Tamp;gt;
- 洛谷 P1115 最大子段和
- python队列及其实现
- linux接收数据并保存到环形缓冲区,自定义print函数缓存打印数据到环形缓冲区...
- 饮冰三年-人工智能-Python-16Python基础之迭代器、生成器、装饰器
- linux path_lookup,Linux虚拟文件系统(4)-- 路径名查找
- Spring循环依赖,竟然有这样不可思议的坑!
- 全球十大数据治理解决方案提供商
- MITRE Implementation of ISO 12233 Spatial Frequency Response (SFR)
- AntDesign 实战教程 --------前言
- 个人大学生工作室面试前期准备
- Python实现消息发送
- 变焦 焦距 等效焦距
- SAP 采购申请、采购订单的审批策略
- 减小PDF文档大小(转载)
- 红米手机H5布局压扁
- 使用 Terraform 部署 MWAA
- 佐佐吉牧:SEO算法变化与对策