㈠ 比较边界填充算法和泛填充算法的异同
现代设计方法与传统设计方法区别(1)直觉设计阶段古代的设计是一种直觉设计。当时人们或是从自然现象中直接得到启示,或是全凭人的直观感觉来设计制作工具。设计方案存在于手工艺人头脑之中,无法记录表达,产品也是比较简单的。直觉设计阶段在人类历史中经历了一个很长的时期,17世纪以前基本都属于这一阶段。(2)经验设计阶段随着生产的发展,单个手工艺人的经验或其头脑中的构思已很难满足这些要求。于是,手工艺人联合起来,互相协作。一部分经验丰富的手工艺人将自己的经验或构思用图纸表达出来,然后根据图纸组织生产。图纸的出现,即可使具有丰富经验的手工艺人通过图纸将其经验或构思记录下来,传与他人,便于用图纸对产品进行分析、改进和提高,推动设计工作向前发展;还可满足的人同时参加同一产品的生产活动,满足社会对产品的需求及提高生产率的要求。因此,利用图纸进行设计,使人类设计活动由直觉设计阶段进入到经验设计阶段。(3)半理论半经验设计阶段20世纪以来,由于科学和技术的发展与进步,设计的基础理论研究和实验研究得到加强,随着理论研究的深入、实验数据及设计经验的积累,已形成了一套半经验半理论的设计方法。这种方法以理论计算和长期设计实践而形成的经验、公式、图表、设计手册等作为设计的依据,通过经验公式、近似系数或类比等方法进行设计。依据这套方法进行机电产品设计,称为传统设计。所谓“传统”是指这套设计方法已延用了很长时间,直到现在仍被广泛地采用着。传统设计又称常规设计。(3)现代设计阶段近30年来,由于科学和技术迅速发展,对客观世界的认识不断深入,设计工作所需的理论基础和手段有了很大进步,特别是电子计算机技术的发展及应用,对设计工作产生了革命性的突变,为设计工作提供了实现设计自动或和精密计算的条件。例如CAD技术能得出所需要的设计计算结果资料、生产图纸和数字化模型,一体化的CAD/CAM技术更可直接输出加工零件的数控代码程序,直接加工出所需要的零件,从而使人类设计工作步入现代设计阶段。此外,步入现代设计阶段的另一个特点就是,对产品的设计已不是仅考虑产品本身,并且还要考虑对系统和环境的影响;不仅要考虑技术领域,还要考虑经济、社会效益;不仅考虑当前,还需考虑长远发展。例如,汽车设计,不仅要考虑汽车本身的有关技术问题,还需考虑使用者的安全、舒适、操作方便等。此外,还需考虑汽车的燃料供应和污染、车辆存放、道路发展等问题。传统设计是以经验总结为基础,运用长期设计实践和理论计算而形成的经验、公式、图表、设计手册等作为设计的依据,通过经验公式、近似系数或类比等方法进行设计。传统设计在长期运用中得到不断完善和提高,是符合当代技术水平的有效设计方法。分析传统的设计过程,可以看出传统设计的每一个环节都是依靠设计者用手工方式来完成的。首先凭借设计者直接的或间接的经验,通过类比分析或经验公式来确定方案,由于方案的拟定很大程度上取决于设计人员的个人经验,即使同时拟定几个方案,也难于获得最优方案。由于分析计算受人工计算条件的限制,只能用静态的、近似的方法,参考数据偏重于经验的概括和总结,往往忽略了一些难解或非主要的因素,因而造成设计结果的近似性较大,有时不符合客观实际。此外,信息处理、经验或知识的存储和重复使用方面还没有一个理想的有效方法,解算和绘图也多用手工完成,这不仅影响设计速度和设计质量的提高,也难以做到精确和优化的效果。传统设计对技术与经济、技术与美学也未能做到很好的统一,使设计带有一定的局限性。这些都是有待于进一步改进和完善之处。总之,传统设计方法是一种以静态分析、近似计算、经验设计、手工劳动为特征的设计方法。显然随着现代科学技术的飞速发展、生产技术的需要和市场的激烈竞争以及先进设计手段的出现,这种传统设计方法已难以满足当今时代的要求,从而迫使设计领域不断研究和发展新的设计方法和技术。现代设计是过去长期的传统设计活动的延伸和发展,是传统设计的深入、丰富和完善。随着设计实践经验的积累,设计理论的发展以及科学技术的进步,特别是计算机技术的高速发展,设计工作包括机械产品的设计过程产生了质的飞跃。为区别过去常用的传统设计理论与方法,人们把这些新兴理论与方法称为现代设计。“现代设计技术”就是以满足市场产品的质量、性能、时间、成本、价格综合效益最有为目的,以计算机辅助设计技术为主体,以知识为依托,以多种科学方法及技术为手段,研究、改进、创造产品活动过程所用到的技术群体的总称。现代设计不仅指设计方法的更新,也包含了新技术的引入和产品的创新。目前现代设计方法所指的新兴理论与方法主要包括优化设计、可靠性设计、设计方法学、计算机辅助设计、动态设计、有限元法、工业艺术造型设计、人机工程、并行工程、价值工程、反求工程设计、模块化设计、相似性设计、虚拟设计、疲劳设计、三次设计、摩擦学设计、绿色设计等。现代设计与传统设计的关系如下。①继承关系。现代设计是过去长期的传统设计活动的延伸和发展,它继承了传统设计的精华,克服了传统设计的一些不足。②共存于突破的关系。设计方法的发展,都有着时序性、继承性,两种方法在一定时间内还会共存。当前的现代设计方法正处在发展之中,可以预见,随着科学技术的进步必将有新的突破。传统设计以经验、试凑、静态、定性分析、手工劳动为特征,导致设计周期长,设计质量差,设计费用高,产品缺乏竞争力。随着现代科学技术的发展,机械产品设计领域中相继出现了一系列新型理论与方法。这些新兴理论与方法统称为现代设计方法。现代设计主要有下列特点。(1)系统性现代设计方法是逻辑的、系统的设计方法。目前有两种体系:一种是德国倡导的设计方法学,用从抽象到具体的发散的思维方法,以“功能—原理—结构”框架为模型的横向变异和纵向综合,用计算机构造多种方案,评价决策选出最优方案。另一种是美国倡导的创造性设计学,在知识、手段和方法不充分的条件下,运用创造技法,充分发挥想象,进行辩证思维,形成新的构思和设计。传统设计方法是经验、类比的设计方法,用收敛性的思维方法,过早地进入具体方案,对功能原理的分析既不充分又不系统,不强调创新,也很难得到最优方案。(2)社会性现代设计将产品设计扩展到整个产品生命周期,发展了“面向X”技术,即在设计过程中同时考虑制造、维修、成本、包装、运输、回收、质量等因素。在现代设计开发新产品的整个过程中,从产品的概念形成到报废处理的全寿命周期中的所有问题,都要以面向社会、面向市场为主导思想考虑解决。设计过程中的功能分析、原理方案确定、结构方案确定、造型方案确定,都要随时按市场经济规律进行尽可能定量的市场分析、经济分析、价值分析。现代设计要求,以并行工程方法指导企业生产管理体制的改革和新产品设计工作,以相似性设计、模块化设计来更好地满足广泛的变化的社会需求,以反求工程技术消化、应用国际先进技术,以摩擦学设计方法来提高机械效率,已三次设计方法来有效地提高产品性能价格比。传统设计是由技术主管指导设计,设计过程中多为单纯注意技术性,设计产品试制后才进行经济分析、成本核算,很少考虑社会问题。(3)创造性现代设计强调激励创造冲动,突出创新意识,力主抽象的设计构思,扩展发散的设计思维、多种可行的创新方案,广泛深入地评价决策,集体运用创造技法,搜索创新工艺试验,不断要求最优方案。传统设计一般是封闭收敛的设计思维,陷入思维定势,过早地进入定型实体结构,采用经验类比和直接主官的评价决策。(4)宜人性现代设计强调产品内在质量的实用性,外观形体的美观性、艺术性和时代性,在保证产品物质功能的前提下,尽量使用户产生新颖舒畅等精神感受。他要求从人的生理和心理特征出发,通过功能分析、界面安排和系统综合,满足人一机一环境等之间的协调关系,发挥系统潜力,提高效率。工业艺术造型设计和人机工程提高了产品的精神功能,不断满足宜人性要求。传统设计往往强调产品的物质功能,忽视或不全面考虑精神功能,而仅凭经验或自发地考虑人一机一环境之间的关系,强调训练用户来适应机器的要求。(5)最优化现代设计重视综合集成,在性能、技术、经济、制造工艺、使用、环境、可持续发展等各种约束条件之下,在广泛的学科领域之间,通过计算机以高效率综合集成为最新科技成果,寻求最优方案和参数。它利用优化设计、人工神经网络算法和工程遗传算法等求出各种工作条件下的最优解。传统设计属于自然优化,在设计—评定—再设计的循环中,凭借设计人员的有限知识、经验和判断力选取较好方案,因而受任何效率的限制,难以对多变量系统在广泛影响因素下进行定量优化。(6)动态化现代设计在静态分析的基础上,考虑生产中实际存在的多种变化量(如产品工作可靠性问题中的考虑载荷谱、负载率等随机变量)的影响,进行动态特性的最优化,根据概率论和统计学方法,针对载荷、应力等因素的离散性,用各种运算方法进行可靠性设计,对一些复杂的工程分析问题还可用有限元法、边界元法等数值解法得到满意的结果。传统设计以静态分析和少变量为主。如机械学中将载荷、应力等因素做集中处理,由此考虑安全系数,这与实际工况相差较远。(7)设计过程智能化这是指借助于人工智能和专家系统技术,由计算机完成一部分原来必须由设计者进行的创造性工作。现代设计认为,各种生物在自己的某些领域里具有极高的水平。仿生学研究如何模仿生物的某些高水平的能力。由于生物中人的只能最高,人能通过知识和信息的获取、推理和运用,解决极复杂的问题。在已被认识的人的思维规律的基础上,在智能工程理论的指导下,以计算机为主模仿人的职能活动,能够设计出高度智能化的产品和系统。传统设计局部上自发地运用某些仿生规律,但这很难达到高度智能化的要求。(8)设计手段的计算机化和数字化计算机在设计中的应用已从早期的辅助分析、计算机绘图,发展到现在的优化设计、并行设计、三维建模、设计过程管理、设计制造一体化、仿真和虚拟制造等。特别是网络和数据库技术的应用,加速
㈡ 求c语言扫描线填充算法代码 事成再加100分
早讲啊,删了:(
这有个,一般能摆到的我都不求人
http://tieba..com/f?kz=194814414
pudn上搜呗,多的一塌糊涂
㈢ C语言 矩形填充算法
#include <stdio.h>
#include <graphics.h>
typedef struct {
int xmin, xmax, ymin, ymax;
} Rectangle;
void FillRectangle(Rectangle *rect, int color) {
int x = 0, y = 0;
for (y = rect->ymin; y <= rect->ymax; y++)
for (x = rect->xmin; x <= rect->xmax; x++) //这里有个分号,应该去掉。
putpixel(x, y, color);
}/* end of FillRectangle() */
int main() {
//declare our color
int color = 0;
//declare our rectangle
Rectangle *rect = (Rectangle *) malloc(sizeof(Rectangle));
if(NULL == rect )
{
printf("allocation memory failed!\n");
return 1;
}
//input the scope
printf("Enter the x-min:\n");
scanf("%d", &rect->xmin);
printf("Enter the x-max:\n");
scanf("%d", &rect->xmax);
printf("Enter the y-min:\n");
scanf("%d", &rect->ymin);
printf("Enter the y-max:\n");
scanf("%d", &rect->ymax);
//input the color
printf("Enter your color:\n");
scanf("%d", &color);
//call our paint function
FillRectangle(rect, color);
return 0;
}
㈣ 区域填充算法可以填充圆吗
可以的。在圆规则范围之内,由圆心至圆上,任意两条线段(半径)之间,可以用扇形填充并进行计算。
㈤ 边缘填充算法属于()算法一种。
边缘填充算法属于A 多边形扫描转换
㈥ 填充算法的种子填充算法
种子填充算法又称为边界填充算法。其基本思想是:从多边形区域的一个内点开始,由内向外用给定的颜色画点直到边界为止。如果边界是以一种颜色指定的,则种子填充算法可逐个像素地处理直到遇到边界颜色为止。
种子填充算法常用四连通域和八连通域技术进行填充操作。
从区域内任意一点出发,通过上、下、左、右四个方向到达区域内的任意像素。用这种方法填充的区域就称为四连通域;这种填充方法称为四向连通算法。
从区域内任意一点出发,通过上、下、左、右、左上、左下、右上和右下八个方向到达区域内的任意像素。用这种方法填充的区域就称为八连通域;这种填充方法称为八向连通算法。
一般来说,八向连通算法可以填充四向连通区域,而四向连通算法有时不能填充八向连通区域。例如,八向连通填充算法能够正确填充如图2.4a所示的区域的内部,而四向连通填充算法只能完成如图2.4b的部分填充。
图2.4 四向连通填充算法
a) 连通域及其内点 b) 填充四连通域
四向连通填充算法:
a) 种子像素压入栈中;
b) 如果栈为空,则转e);否则转c);
c) 弹出一个像素,并将该像素置成填充色;并判断该像素相邻的四连通像素是否为边界色或已经置成多边形的填充色,若不是,则将该像素压入栈;
d) 转b);
e) 结束。
四向连通填充方法可以用递归函数实现如下:
算法2.3 四向连通递归填充算法:
void BoundaryFill4(int x, int y, long FilledColor, long BoundaryColor)
{
long CurrentColor;
CurrentColor = GetPixelColor(x,y);
if (CurrentColor != BoundaryColor && CurrentColor != FilledColor)
{
SetColor(FilledColor);
SetPixel (x,y);
BoundaryFill4(x+1, y, FilledColor, BoundaryColor);
BoundaryFill4(x-1, y, FilledColor, BoundaryColor);
BoundaryFill4(x, y+1, FilledColor, BoundaryColor);
BoundaryFill4(x, y-1, FilledColor, BoundaryColor);
}
}
上述算法的优点是非常简单,缺点是需要大量栈空间来存储相邻的点。一个改进的方法就是:通过沿扫描线填充水平像素段,来处理四连通或八连通相邻点,这样就仅仅只需要将每个水平像素段的起始位置压入栈,而不需要将当前位置周围尚未处理的相邻像素都压入栈,从而可以节省大量的栈空间。
㈦ java如何实现填充算法
四向连通递归填充算法:
void BoundaryFill4(int x, int y, long FilledColor, long BoundaryColor)
{
long CurrentColor;
CurrentColor = GetPixelColor(x,y);
if (CurrentColor != BoundaryColor && CurrentColor != FilledColor)
{
SetColor(FilledColor);
SetPixel (x,y);
BoundaryFill4(x+1, y, FilledColor, BoundaryColor);
BoundaryFill4(x-1, y, FilledColor, BoundaryColor);
BoundaryFill4(x, y+1, FilledColor, BoundaryColor);
BoundaryFill4(x, y-1, FilledColor, BoundaryColor);
}
}
该算法的优点是非常简单,缺点是需要大量栈空间来存储相邻的点。
㈧ java 计算机图形学 区域填充算法
你可以定义一个类,这个类的作用就是存放你已经存在的图画,在这个类里面实现画图形的方法,然后可以用ArrayList数组实现,最后用个迭代器来实现!!!或者也可以这样考虑,在调用repaint方法的时候系统会自动调用updata方法,你只要覆盖updata方法即可!!!~!~~
哎~~~~你不会查API啊,里面有很多的方法,我也记不住,你自己查一下不就知道拉!!!1