计算机图形学课程设计,求帮忙! 【计算机图形学】 编写一个利用向量方法分解凹多边形的子程序

计算机图形学课程设计,求帮忙! 【计算机图形学】 编写一个利用向量方法分解凹多边形的子程序,第1张

计算机图形(计算机图形,简称为CG)的2D或3D图形转换成光栅形式的计算机监视器科学使用数学算法。

简单地说,计算机图形学的主要内容是计算机图形,以及利用计算机的图形运算,处理和显示相关的原理和算法的研究。图形通常是由点,线,面,体,灰色,颜色,线的类型,线条宽度等几何元素的非几何属性。的图形处理技术的角度来看,主要分为两大类,一为代表的信息化线图,等值线图,曲面,线框图,和其他着色图,也就是通常所说逼真的图形,如。

计算机图形,使用电脑的主要目的是产生一个可喜的逼真的图形。为此,必须建立的场景描述的图形的几何表示,然后某种光照模型,计算出的假想光源,纹理,照明效果的材料属性在。计算机图形与其他学科计算机辅助几何设计有着密切的关系。事实上,图形也可以代表场景中的几何体的曲线曲面造型技术和实体造型技术为主要内容的。同时,基于数字图像的逼真的图形,计算机图形将有着密切的关系和图像处理。

图形图像这两个概念之间的区别越来越模糊,但仍存在不同:纯粹的电脑位图的灰度图像,图形中的几何性质,或更强调场景的几何表示的几何模型的物理性质是由一幕又一幕。

计算机图形学的研究内容非常广泛,如图形硬件,图形标准,图形,交互技术,光栅图形生成算法,曲线和曲面造型,实体建模,计算和显示逼真的图形算法,非真实感渲染,以及科学可视化,计算机动画,模拟自然风光,虚拟现实等。

计算机图形学的发展

1963年,伊凡·萨瑟兰(伊万·萨瑟兰)在麻省理工学院出版的博士论文,题为“绘图板”,它标志着计算机图形的正式诞生。到目前为止,超过30年的历史。以前的计算机符号处理系统,因为人类的右脑功能随着计算机图形学,计算机部件,计算机图形的性能,是具有十分重要的意义。近年来,计算机图形学已经取得了很大的进展,在以下几个方面:

1,发展智能CAD

CAD还显示,智能化的趋势,它是最流行的CAD软件。的主要功能是支持后续阶段11工程制图及输出,产品设计功能相对较弱,而使用AutoCAD是最常用的功能或交互式图形,以进行最基本的产品设计, AutoLISP语言编写程序,有时与其他的高级语言,以协助准备和不便。新一代的智能CAD系统,可以实现从概念设计到结构设计过程中。例如,由德国公司的西门子Sigraph设计软件开发可以实现以下功能:①从一开始就设计草图,用电脑没有输入准确的坐标点费时,可任意变化,一旦结构是确定的,大小合适的满意图纸②该软件有一个关系型数据结构,当你改变了当地的图纸,自动变更的相关部分,视图,视图会自动,甚至改变的一部分绘制其它的零件图和装配图自动相关的部分组成:③在不同的专业领域,也有一些常用件和标准件,因此,希望能有一个参数库。无需编程Sigraph只是简单涂上了数字将能够建立自己的画廊;④Sigraph装置用来观察的设计在实际 *** 作中是合理的,可以实现的动态模拟产品的设计。另一个领域?自动进入智能CAD和工程图纸,设计图纸的CAD技术的迅速普及和应用,各厂家的智能识别,设计机构需要长期积累下来的成千上万快速,准确地输入到计算机中,开发的新产品,新技术信息。多年来,图形常用的输入法CAD图形数字化仪的交互式输入和鼠标加键盘交互式输入方法。这是很难适应工程界的迫切需要大量的图纸输入。因此,基于光电扫描仪图纸自动输入法已成为国内外CAD工作者的努力探索出一条新的主题。图智能识别计算机硬件,计算机图形学,模式识别,人工智能,高技术含量,研究工作的难度。自动绘图输入和智能识别是两个不可分割的,手绘的图纸输入到计算机中,使用一台扫描仪,形成的点阵图像。 CAD只能编辑矢量图形,需要的点阵图像转换为矢量图形。自动工作的电脑。这给我们带来了很多问题。如①智能识别图像;②特征提取和识别;③拓扑图形模式的建立和理解;④实用的后处理方法等。国家自然科学基金和“863”计划基金支持这方面的研究,在国内外有一些软件是付诸实用,如美国RVmaster德国VPMAX,与清华大学,东北大学,产品,等等。 。但效果不是很理想。也未能实现人们渴望的效果。

2电脑艺术设计

21电脑艺术发展

1952年。美国本。 Laposke与模拟计算机做的波图的电子抽象的“预示着计算机技术(计算机图形)正式成立之前开始的。电脑艺术早期的探索阶段的发展可分为三个阶段:

( 1)(1952 1968年),大部分员工的创造性的科学家和工程师,工程主要是平面几何图形。计算机与自动化杂志于1963年推出了一年一度的电脑美术比赛。

代表作品:1960年Wiuiam Ferrter波音公司生产工效实验动态仿真模拟飞行员在飞机在各种情况下,1963年肯尼思了解ITON打印机的工作原理“裸照”。GTG日本队在1967年的“回到包厢。”

(2)中应用程序阶段( 1968年至1983年),伦敦,1968年,第一届世界计算机艺术展“控制论珍品(Cybernehic Serendipity1标到世界范围内的研究和应用阶段;计算机计算机图形技术的成熟,一些大学开始设置相关的问题,一直是CAD应用程序系统和结果,三维建模系统和代表作品:1983年IBM商业价值研究院的逐步完善,设计的分山Richerd沃斯(现场分形通道hrtp:ttfracta1126tom查找“分形”的知识)

(3)微型计算机和工作站平台的应用和推广阶段(1984年至今),个人电脑的图形系统已经成熟,已经有大量的商业艺术(设计)软件市场,为苹果MAC机的系统软件和图形化桌面创新体系CAD成为被广泛接受,艺术与设计领域的一个重要组成部分。代表作品:1990年Jefrey肖互动图形作品“读城F清晰的城市)

22计算机设计(计算机德我GN我CS )

包括三个方面:环境艺术设计(建筑,汽车),视觉传达设计(包装),和产品设计。

CAD的艺术干预,三个应用层次:

(1)计算机图形,系统设计意味着加强和替代效应是核心(高精度,高速,高存储)的水平。

(2)计算机图形计算机图形作为一种新的表现形式和新的图像资源

(3)作为设计方法和概念。

3计算机动画艺术

31历史回顾

电脑动画技术的发展和许多其他学科的发展密切相关的计算机图形学,电脑绘画,电脑音乐之间的薄膜技术,电视,计算机软件和硬件技术,计算机辅助设计,和许多其他学科的最新成果,电脑动画技术的研究和开发中起着非常重要的作用,在20世纪50年代到20世纪60年代,大部分的电脑绘画的艺术作品打印机和绘图仪出现,直到20世纪60年代末,在电脑前显示的点阵特性,通过精心的设计模式,以电脑艺术创作活动。

70年代的电脑艺术走向繁荣,成熟于1973年,在东京举行,索尼的第一

国际电脑艺术展“自20世纪80年代以来,远远超出了人们的想象以前的SIGGRAPH电脑艺术发展的步伐,代表最高水平的计算机图形学研究年度会议上,无尽的流的一个美妙的电脑艺术作品,在此期间,奥斯卡奖得主,计算机图形制作一部**经常名单,伟大的,但我自己的感觉,在中国的第一台电脑艺术研讨会和作品展1995年在北京举行,它是在总结了近年来,计算机艺术作品在中国的未来发展中发挥了重要的推动作用

32用电脑制作的动画**特技<BR /电脑动画是一个重要的应用是拍**特技,特技的发展和计算机动画发展是相辅相成的。生产了七分钟的MIRA实验室领导的著名的电脑动画专家塔尔曼夫妇于1987年在蒙特利尔举行的动画**“计算机”再现国际影星玛丽莲·梦露式的1988年的美国**“谁陷害了兔子罗杰”(“谁陷害了兔子罗杰?)二维动画人物和真实演员的完美结合,它是膛目结舌叹为观止,它使用了大量的电脑动画1991年**“终结者II:世界末日”,展现精彩的计算机技术。此外,有“侏罗纪公园”(“侏罗纪公园”),“狮子王”和“玩具总动员”,“玩具总动员

33国内形势

计算机动画技术在中国起步较晚,在1990年,第11届亚运会上,自那时以来,在国内**和电视制作的电脑动画技术的飞速发展,三维动画的3D Studio微型计算机软,甚至和普及的两个第一次与一个三维计算机动画技术制作电视节目标题。三维图形设计软件使用Photostyler,Photoshop和其他代表的微机,电脑动画技术在中国的应用已经发挥了作用,帮助推波谰。

电脑动画是一个非常广泛的应用领域,除了用于**和电视作品,科研,视景仿真,视频游戏,工业设计,教学和培训,照片仿真,过程控制的许多方面有重要的应用中,平面绘画,建筑和设计,如军事战术模拟

4个科学

可视化科学计算可视化的发达国家在20世纪80年代后期开发的一种新兴的技术,几何和图像在屏幕上显示的信息处理,科学计算和计算结果数据和交互处理,成为一个强大的工具

1987年英国国家科学基金会在华盛顿召开的第一次会议,会议一致认为,“图形的科学计算可视化科学计算的过程中的各种现象的发现和认识。和图像技术应用于科学计算是一个新的领域,科学家不仅

需要由计算机计算派生的数据,需要了解计算机过程中的数据的变化进行分析。会议命名为科学计算可视化技术“(科学计算可视化)。”科学可视化图形生成的图像理解技术结合到计算机可以理解的图像数据生成的图形可以从复杂的多维数据,它涉及到以下独立在以下几个领域:计算机图形学,图像处理,计算机视觉,计算机辅助设计和互动技术。科学计算可视化功能来分,可分为三大类:(1)处理后的结果数据;(2)数据处理和显示的实时跟踪;(3)的实时数据显示和交互处理的结果。

41外国的科学计算可视化的现状

(1)分布式虚拟风洞

这是一个研究项目,研究中心,美国国家航空和航天局(Ames试验),连接到一台超级计算机上的两个虚拟屏幕共享的分布式虚拟环境中使用。实现三维流场不稳定。协同工作的两个人,在相同的环境中从不同的角度和观察方向的流场数据。

(2)PHTHFINDER

这是一个研究项目美国国家超级计算机应用中心(NCSA)。研究大气流体的软件在互动的环境。PHTHFINDER通过多种模型来研究风暴。

(3)狗心脏的CT数据的动态显示

是NCSA的研究项目,它是利用并行计算资源的远程实现动态显示的CT扫描三维数据场的体绘制技术。具体内容是狗的心脏搏动周期的动态图像。

(4)可视化的燃烧过程的动态模型

这是一个研究项目的西北大学。发生非热气体燃烧的复杂的空间暂时图像。位于两个同心的圆筒状的可燃气体混合物之间的火焰从内注入缸,燃烧的物质生成由外圆柱发送。

(5)胚胎的可视化

伊利诺伊大学在芝加哥亿美元的应用软件,工作站和超级计算机的可视化,其内容实施一个为期七周的人胚胎的交互式三维显示,从获得的数据来自国家健康与医学博物馆重建项目,实现远程访问的分布式计算和网络资源,实现人表单数据的可能性。最近美国的可视化女人把整个人类的身体,他们将在1780年,约1毫米厚的切片男性切的两位志愿者(男人和女人),5400约O3毫米厚,大的数据量。概括起来以下内容:

(1)在著名的国家实验室和大学从研究到应用,应用覆盖领域的天体物理学,生物学,气象学,空气动力学,数学,医学影像及其他科学可视化科学计算可视化技术l手术的技术水平正在从后处理的实时跟踪和交互控制的发展。

(2)美国在科学计算可视化,有四个超级计算机,网络光纤高速,高高性能工作站和虚拟环境相结合,在这方面的技术发展的重要方向。显示算法的三维数据场,数据场分布密集的规则(如CT扫描数据)使用的体绘制技术该算法的效果,但计算耗时。稀疏的数据字段,或不规则分布的应用,如天体物理学,气象学,中间使用的几何图像结构,这种方法生成的图像更快,更容易做到实时交互处理。

虚拟现实

“虚拟现实”(Virbual ReMity) - (VPL),美国喷气实验室的创始人拉尼尔(贾瑞恩拉尼尔)首先提出在克鲁格(Myren Kruege)字驱动70年在早期的实验。人工现实“(人工现实);·吉布森(William Gibson的)1984出版的科幻小说Neuremanccr,也被称为”可控的空间“(Cyberspaee)的。虚拟现实,但也教育人们叫它虚拟环境(虚拟环境)是由美国国家航空和航天局和军事部门的模拟发生器,利用计算机图形,定位,跟踪,多功能传感器和一个高科技控制是有效地模拟实际场景的情况下,使观众产生一个真正的沉浸式虚拟环境的感觉是由硬件和软件,硬件部分主要包括:传感器(传感器),的印象(Efeeter)和连接侍传感器的印象,产生模拟的物理环境,特殊的硬件。利用虚拟现实技术,虚拟现实环境中的软件,您需要完成以下三个功能:根据建立的角色(演员)以及对象的形状和动力学模型,建立对象之间的,和间接的环境牛顿定律的相互作用决定的议案;中描述的内容

51应用虚拟现实技术

511手 *** 作空间接口用于脑外科的规划工具

最近的环境特征,美国加州旧金山大学推出的一款可用于脑外科手术计划的Netra手 *** 作空间界面工具,根据脑外科医生的工作环境和生活习惯,该系统使用的头控制器的外部形象。不属于他们的职业习惯的基础上,通过旋转头控制的外部形象,便于观察人类大脑的脑外科医生通过右侧的控制面板来控制的平面剥离表面扫描人脑CT检查的基础上或脑部MR图像模式需要

512真实图像的观察角度来看,有色虚拟环境,用于治疗恐高症

开发的虚拟现实系统可以产生以下虚拟环境:①透明玻璃电梯,②高层建筑的阳台。 @位于之上的索桥蝴蝶怪。为了提高患者的真实的感觉,在另外的的头戴式显示器的磨损可以制作三维场景,但也必须站在一个特殊的框架内。调整电梯。高度的阳台和索桥可以产生不同程度的刺激。克鲁格等人 513虚拟风洞

德国国家工程研究中心成立了一个所谓的“虚风的继承人,代替风洞试验(由于成本高,风洞试验,与实验是难以控制的)在一个虚拟的风洞模拟实验数据的有限元程序上运行的超级计算机或高性能工作站使用的老虎,风洞,观察穿着液晶开关眼镜可以很容易地观察点,线,但也可以被放大为更详细的研究,极大地方便了人们的研究对象特性的动态。

封闭514封闭的战斗作战训练战斗战斗训练(CCTT)的MASTA格雷戈里和其他人为美国军方开发的仿真设备,为坦克和机械化步兵练习,在实际的地形与一般的虚拟环境和模拟器,它需要建立适合于大规模的军事训练复杂的虚拟环境。

515虚拟现实技术在建筑设计的应用程序

在建筑设计中的虚拟现实技术也得到了广泛的应用。克鲁格他们设计未来的建设出现了,他们发明了虚拟的工作平台,建设的科学家一起,通过液晶眼镜戴,你可以看到设计的三维建筑物,水井很容易地添加或删除部分的建筑物或其他物体,同时通过数据手套,还可以设置不同的光源来模拟不同时间的日光和月光。中观察到不同的光线所设计的建筑之美,以及整个环境的协调。

短的虚拟现实技术是一个以上的跨学科和新技术集成。因此,它的发展将依靠发展和科学和技术,虚拟现实技术进步的最基本的要求是体现在实时性和真实性的场景,但在一般情况下,实时的真实性往往是相互矛盾的。

52多通道用户界面 />用户界面是人与计算机的计算机系统之间互相沟通的重要组成部分。八十年代WIMP(窗口,菜单,鼠标),基于图形用户界面(GUD大大提高计算机的可用性,可学习性和有效性,快速替换命令的行为代表的字符界面已经成为今天的计算机用户界面用户的中心系统设计思想的主流。提高自然的人机互动,和提高的效率和带宽的人机交互的方向是用户界面,这样的想法?多通道用户界面,其中包括语言,手势输入,头部跟踪,视觉跟踪,立体显示,3D交互技术,感官反馈,和自然语言界面。说表面的人体是人体的任何部分的人机界面应该是一个人机对话渠道虚拟现实展示的关键,这不仅需要的软件,主要的硬件实现。总结了在虚拟现实的人人机交互通道可以分为两个方面:主要感觉通道和主要通道的多通道用户界面应力的作用:

(1)多种互动渠道,如眼语手势。

( 2)双向性的互动。互动每个通道的输入/输出

(3)不一定是在同一个通道。例如,眼睛和耳朵可以接收信息,但有一个明显的区别。眼睛永远是积极的,主动获取信息,将永远是被动的耳朵,有些信息你是否愿意听,永远失去了在耳朵上,这需要具体选择的互动渠道,在计算机图形学中一个特定的相互作用在一个虚拟现实面向

和目的。虚拟现实发展的要求,将推动该学科的发展,计算机图形学。同样,虚拟现实技术的发展将取决于各领域的发展,每一个具有自己的特色,但归纳起来其他学科的发展,计算机图形前景诱人。形势逼人(中国仍然是相对落后的),但通过我们的努力,也可以缩短差距。

我这里有。要加分哦。兄弟。下面就是JAVA的源码:

// 3D painted fractal mountains, Evgeny Demidov 12 Oct 2001

import javaawt;

import javaawtevent;

import javautilStringTokenizer;

public class MountainC extends javaappletApplet

implements MouseListener, MouseMotionListener {

int n = 16, n1, h,w,h2,w2, mx0,my0, xPol[],yPol[], iCol[][][];

double rnd, fiX = 2, fiY = 3, dfi = 01, scale = 8, m20,m21,m22;

double vert[][][], vert1[][][], Norm[][][][], Norm1z[][][], M[];

Image buffImage; Graphics buffGraphics;

Color col[][];

boolean painted;

public void init(){

w = getSize()width; h = getSize()height; w2 = w/2; h2 = h/2;

String s=getParameter("N"); if (s != null) n = IntegerparseInt(s);

xPol = new int[3]; yPol = new int[3];

buffImage = createImage(w, h); buffGraphics = buffImagegetGraphics();

col = new Color[4][256];

for (int i = 0; i < 256; i++){

col[0][i] = new Color(0, 0, i);

col[1][i] = new Color(0, (i220)/256, 0);

col[2][i] = new Color((i150)/256, (i150)/256, (i50)/256);

col[3][i] = new Color(i, i, i);}

s = getParameter("bgColor"); if (s != null){

StringTokenizer st = new StringTokenizer(s);

int red = IntegerparseInt(stnextToken());

int green = IntegerparseInt(stnextToken());

int blue = IntegerparseInt(stnextToken());

setBackground( new Color(red, green, blue));}

else setBackground(new Color(255,255,255));

addMouseListener(this);

addMouseMotionListener(this);

setup();

}

public double R(){ return rnd(Mathrandom()-5);}

public void setup(){

rnd = 1;

n1 = n+1;

iterate();

vert = new double[n1][n1][3]; vert1 = new double[n1][n1][2];

double dx = w/(double)n;

int t = 0;

for (int i = 0; i < n1; i++)

for (int j = 0; j < n1; j++){

vert[i][j][0] = dxi - w2; vert[i][j][2] = dxj - w2;

double mi = M[t++];

if (mi < 0) mi = 01Mathrandom();

vert[i][j][1] = wmi - w2/2;}

Norm = new double[n1][n1][2][3]; Norm1z = new double[n1][n1][2];

iCol = new int[n][n][2];

for (int i = 0; i < n; i++)

for (int j = 0; j < n; j++){

double s =

((vert[i][j][1] + vert[i+1][j][1] + vert[i+1][j+1][1])/3 + w2/2)/w;

if (s < 01) iCol[i][j][0] = 0;

else if (s+1Mathrandom() > 35) iCol[i][j][0] = 3;

else if (s+1Mathrandom() > 15) iCol[i][j][0] = 2;

else iCol[i][j][0] = 1;

s = ((vert[i][j][1] + vert[i][j+1][1] + vert[i+1][j+1][1])/3 + w2/2)/w;

if (s < 01) iCol[i][j][1] = 0;

else if (s+1Mathrandom() > 35) iCol[i][j][1] = 3;

else if (s+1Mathrandom() > 15) iCol[i][j][1] = 2;

else iCol[i][j][1] = 1;

Norm[i][j][0][0] = vert[i][j][1] - vert[i+1][j][1];

Norm[i][j][0][1] = dx;

Norm[i][j][0][2] = vert[i+1][j][1] - vert[i+1][j+1][1];

double mod = Mathsqrt(Norm[i][j][0][0]Norm[i][j][0][0] + Norm[i][j][0][1]

Norm[i][j][0][1] + Norm[i][j][0][2]Norm[i][j][0][2]) / 2555;

Norm[i][j][0][0] /= mod; Norm[i][j][0][1] /= mod; Norm[i][j][0][2] /= mod;

Norm[i][j][1][0] = vert[i][j+1][1] - vert[i+1][j+1][1];

Norm[i][j][1][1] = dx;

Norm[i][j][1][2] = vert[i][j][1] - vert[i][j+1][1];

mod = Mathsqrt(Norm[i][j][1][0]Norm[i][j][1][0] + Norm[i][j][1][1]

Norm[i][j][1][1] + Norm[i][j][1][2]Norm[i][j][1][2]) / 2555;

Norm[i][j][1][0] /= mod; Norm[i][j][1][1] /= mod; Norm[i][j][1][2] /= mod;}

rotate();

}

public void iterate(){

int nc=n, Max=n1n1, ncn1;

double Min=-1;

M = new double[Max];

for (int i=n+2; i < nn1-1; i++) M[i] = Min;

for (int i=2n1; i < nn1; i += n1) M[i] = M[i-1] = 0;

while ( (nc /= 2) >= 1){

ncn1 = ncn1;

for (int j=ncn1; j < Max; j += ncn1+ncn1){

for (int i= nc; i < n; i += nc+nc){

if (M[i+j]==Min)

M[i+j] = (M[i+j+nc-ncn1] + M[i+j-nc+ncn1])/2+R();

if (M[i+j+nc]==Min)

M[i+j+nc] = (M[i+j+nc+ncn1] + M[i+j+nc-ncn1])/2+R();

if (M[i+j+ncn1]==Min)

M[i+j+ncn1] = (M[i+j-nc+ncn1] + M[i+j+nc+ncn1])/2+R(); }}

rnd /= 2;}

}

public void destroy() {

removeMouseListener(this);

removeMouseMotionListener(this);

}

public void mouseClicked(MouseEvent e){} // event handling

public void mousePressed(MouseEvent e) {

mx0 = egetX(); my0 = egetY();

if ( eisControlDown() ){

setup();

repaint();}

if ( eisAltDown() ){

if ( eisShiftDown() ){ n /= 2; if (n < 1) n = 1;}

else n = 2;

setup();

repaint();}

econsume();

}

public void mouseReleased(MouseEvent e){}

public void mouseEntered(MouseEvent e) {}

public void mouseExited(MouseEvent e) {}

public void mouseDragged(MouseEvent e) {

int x1 = egetX(); int y1 = egetY();

if ( eisShiftDown() ) scale = Mathexp(-(y1 - my0)/(double)w);

else fiX += dfi(y1 - my0);

fiY += dfi(x1 - mx0); mx0 = x1; my0 = y1;

rotate();

repaint();

econsume();

}

public void rotate(){

double ct = Mathcos(fiX), cf = Mathcos(fiY),

st = Mathsin(fiX), sf = Mathsin(fiY),

m00 = scalecf, m02 = scalesf,

m10 = scalestsf, m11 = scalect, m12 = -scalestcf;

m20 = -ctsf; m21 = st; m22 = ctcf;

for (int i = 0; i < n1; i++)

for (int j = 0; j < n1; j++){

vert1[i][j][0] = m00vert[i][j][0] + m02vert[i][j][2];

vert1[i][j][1] = m10vert[i][j][0] + m11vert[i][j][1] + m12vert[i][j][2];}

for (int i = 0; i < n; i++)

for (int j = 0; j < n; j++)

for (int k = 0; k < 2; k++)

Norm1z[i][j][k] = m20Norm[i][j][k][0] + m21Norm[i][j][k][1] +

m22Norm[i][j][k][2];

painted = false;

}

public void mouseMoved(MouseEvent e) {}

public void paint(Graphics g) {

if ( !painted ){

buffGraphicsclearRect(0, 0, w, h);

int ib=0, ie=n, sti=1, jb=0, je=n, stj=1;

if (m20 < 0){ ib = n; ie = -1; sti = -1;}

if (m22 < 0){ jb = n; je = -1; stj = -1;}

for (int i = ib; i != ie; i += sti)

for (int j = jb; j != je; j += stj){

if (Norm1z[i][j][0] > 0){

xPol[0] = w2 + (int)vert1[i][j][0];

xPol[1] = w2 + (int)vert1[i+1][j][0];

xPol[2] = w2 + (int)vert1[i+1][j+1][0];

yPol[0] = h2 - (int)vert1[i][j][1];

yPol[1] = h2 - (int)vert1[i+1][j][1];

yPol[2] = h2 - (int)vert1[i+1][j+1][1];

buffGraphicssetColor(col[iCol[i][j][0]][(int)(Norm1z[i][j][0])]);

buffGraphicsfillPolygon(xPol,yPol, 3);}

if (Norm1z[i][j][1] > 0){

xPol[0] = w2 + (int)vert1[i][j][0];

xPol[1] = w2 + (int)vert1[i][j+1][0];

xPol[2] = w2 + (int)vert1[i+1][j+1][0];

yPol[0] = h2 - (int)vert1[i][j][1];

yPol[1] = h2 - (int)vert1[i][j+1][1];

yPol[2] = h2 - (int)vert1[i+1][j+1][1];

buffGraphicssetColor(col[iCol[i][j][1]][(int)(Norm1z[i][j][1])]);

buffGraphicsfillPolygon(xPol,yPol, 3);} }

painted = true;}

gdrawImage(buffImage, 0, 0, this);

showStatus( "n=" + n);

}

public void update(Graphics g){ paint(g); }

}

代码有很多小错误,我帮你修改了下,

这是函数文件

function S1tree(n)

clc;

S='F';a=pi/10;A=pi/2;z=0;zA=[0,pi/2];

p1='FF+[+F+F]-[+F]';

p2='F[+F]F[-F[+F]]';

p3='FF-[-F+F+F]+[+F-F-F]';

for k=2:n

  c=rand(1);

  if c>=07      S=strrep(S,'F',p1);

  elseif c>=035 S=strrep(S,'F',p2);

  else           S=strrep(S,'F',p3);

  end

end

figure;

for k=1:length(S)

  switch S(k)

      case 'F'

          plot(real(z+2exp(iA)),imag(z+2exp(iA)),'g','LineWidth',2);

          hold on;

          z=z+2exp(iA);

      case '+'

          A=A+a;

      case '-'

          A=A-a;

      case '['

          zA=[zA;[z,A]];

      case ']'

          z=zA(end,1);

          A=zA(end,2);

          zA(end,:)=[];

      otherwise

  end

end

在主窗口中输入

S1tree(7)

画出的图如下(由于每次运行S1tree(7)代码产生随机数不一样,得到的图不一样但是类似)

以上就是关于计算机图形学课程设计,求帮忙! 【计算机图形学】 编写一个利用向量方法分解凹多边形的子程序全部的内容,包括:计算机图形学课程设计,求帮忙! 【计算机图形学】 编写一个利用向量方法分解凹多边形的子程序、求一个彩色3D分形山的MATLAB或Java或vb源程序、求改正,这个随机分形树的MATLAB程序到底哪儿错了,运行错误等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/10123073.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存