范文一:PPT绘制螺旋线
鼠绘步骤
首先,插入一条弧形,使用OK插件的控点工具,设置控点2的数值为90,完成后得到一条半圆弧形
然后,锁定弧形的纵横比,按Ctrl D进行复制,次数随意
接下来,手动缩小一条弧形的尺寸
使用OK插件的尺寸递进菜单下的从小到大,然后居中对齐。此时得到的是只有一半的螺旋线
选中一条弧形,使用OK插件的隔选对象,可以间隔选中其他弧形
PS:进行此步时,页面中最好只有弧形,否则会把无关元素也选中。也可以把所有弧形Ctrl G组合起来,选中组合中的任意一条弧形,再使用OK的隔选对象,这样就不怕选中无关元素了
最后,按上下方向键进行微调对齐就OK了
获取OK
http://oktools.xyz
长图教程
http://huaban.com/slibe
视频教程
范文二:绘制螺旋线
使用Oracle支持的PL/SQL语言编写,在字符界面绘制螺旋线r=r0+k0*sita的过程procedure:
参数n表示绘制的周期数,默认为4,即绘制的角度范围0 -- 4*2pi。
create or replace procedure luoxuan(r0 number default 0, k0 number default 1.5, n number default
4) as
r number;
sita number := 0;
PI number := 3.14159265;
x number;
y number;
row_str varchar2(500) := ''; type row_type is table of char(1) index by binary_integer;
row row_type;
type col_type is table of row_type index by binary_integer;
rows col_type;
begin
for x in -50 .. +50 loop
row(x) := chr(32);
end loop;
for y in -50 .. +50 loop
rows(y) := row;
end loop;
for i in 0 .. n*200 loop
sita := sita + PI/100;
r := r0 + k0*sita;
x := r*cos(sita); x := round(x); y := r*sin(sita); y := round(y); rows(y)(x) := '*';
end loop;
for y in reverse -50 .. +50 loop dbms_output.put(y||': ');
for x in -50 .. +50 loop
row_str := row_str||rows(y)(x); end loop;
dbms_output.put_line(row_str); row_str := '';
end loop;
end;
以下是调用该过程的绘制效果:
说明:
上图是在100×100的点阵上绘制的螺旋线示例,在字符界面绘制螺旋线受字符界面精度的影响,曲线不太顺畅,如果在窗口屏幕上绘制,精度可以大幅度提高。
贾代平
2012-5-1
范文三:螺旋线绘制.doc
用C语言编写绘制画阿基米德螺旋线ρ= θ在[-150,150]区间内的曲线的程序,要求步长为
0.1。
解答:
#include #include #include #include void main() {int driver,mode; int x,y,x0,y0; float sita,r; driver=DETECT;mode=VGAHI; initgraph(&driver,&mode,""); /*初始化图形模式*/ sita=-150.0;r=sita; /*绘图起点位置*/ x0=getmaxx()/2;y0=getmaxy()/2; /*取原点为屏幕的中心*/ x=x0+r*cos(sita); /*计算起点坐标*/ y=y0+r*sin(sita); moveto(x,y); /*移绘图笔到起点*/ while(sita<150.0)>150.0)> {sita+=0.1;r=sita; x=x0+r*cos(sita); /*计算下一点坐标*/ y=y0+r*sin(sita); lineto(x,y); /*画线*/ } x=x0+150*cos(150.0); /*计算终点坐标*/ y=y0+150*sin(150.0); lineto(x,y); /*落笔到终点*/ getch(); /*按任何键继续*/ closegraph(); /*关闭图形模式*/ } 9.7 编写程序先绘出直角坐标系,再画出正弦曲线和余弦曲线,区间为[0,2π]。 解答: #include #include #include #include void main() {int driver,mode; int x,y,x0,y0,maxx,maxy; float sita,r; sita=0; driver=DETECT;mode=VGAHI; initgraph(&driver,&mode,"..\\BGI"); /*初始化图形模式*/ maxx=getmaxx()/2;maxy=getmaxy()/2; /*xy坐标的单位值*/ x0=maxx;y0=maxy; /*取原点为坐标为屏幕的左边中心*/ moveto(0,y0); /*移绘图笔到原点*/ lineto(2*x0,y0); /*画线*/ moveto(x0,0); /*移绘图笔*/ lineto(x0,2*y0); /*画线*/ x=x0; /*计算起点坐标*/ y=y0; moveto(x,y); /*移绘图笔到起点*/ setcolor(GREEN); /*设置绘图笔颜色*/ while(sita<2*3.1416)>2*3.1416)> {sita+=0.1; x=x0+sita*maxx/(2*3.1416); /*计算下一点坐标*/ y=y0-sin(sita)*maxy; lineto(x,y); /*画线*/ } x=x0+maxx; /*计算终点坐标*/ y=y0-sin(2*3.1426)*maxy; lineto(x,y); /*落笔到终点*/ sita=0; /*计算cos函数 */ x=x0+sita*maxx/(2*3.1416); /*计算起点坐标*/ y=y0-cos(sita)*maxy; moveto(x,y); /*移绘图笔到起点*/ setcolor(YELLOW); while(sita<2*3.1416)>2*3.1416)> {sita+=0.1; x=x0+sita*maxx/(2*3.1416); /*计算下一点坐标*/ y=y0-cos(sita)*maxy; lineto(x,y); /*画线*/ } x=x0+maxx; /*计算终点坐标*/ y=y0-cos(2*3.1426)*maxy; lineto(x,y); /*落笔到终点*/ getch(); /*按任何键继续*/ closegraph(); /*关闭图形模式*/ } 9.9 设计简单的下拉菜单,实现Turbo C的主菜单以及Run的子菜单。 解答: #include #include void main() {int i,key0,key,key1,y,test; char *m[]={"File","Edit","Run","Compile","Project","Options", "Debug","Break/watch"}; char *f[]={"Run Ctrl-F9", /*Run子菜单*/ "Programick Alt-F3", "New ", "Save F2", "Write to ", "Directory ", "Change dir ", "Os shell ", "Quit Alt-X"}; char buf0[80*2],buf[16*10*2],buf1[16*2]; /*定义保存屏幕区域的数组*/ textbackground(BLUE); /*定义背景颜色*/ clrscr(); window(1,1,80,1); /*定义主菜单区域的窗口*/ textbackground(WHITE); /*设置窗口背景颜色*/ textcolor(BLACK); /*设置窗口字符颜色*/ clrscr(); window(1,1,80,2); for(i=0;i<8;i++)>8;i++)> cprintf(" %s",m[i]); /*显示主菜单*/ gettext(1,1,80,2,buf0); /*保存主菜单区域内容*/ while(1) {key=0; while(bioskey(1)==0); /*等待键盘输入*/ key=bioskey(0); /*取键盘输入码*/ key=key&0xff?0:key>>8; /*屏蔽低8位,只取扩充键码*/ if(key==45) exit(0); /*如果是按Alt+X则退出*/ if(key==33) /*如果是按Alt+F则进入子菜单处理*/ {textbackground(BLACK); textcolor(WHITE); gotoxy(4,1); cprintf("%s",m[0]); gettext(4,2,19,11,buf); /*保存窗口区域的原有内容*/ window(4,2,19,11); textbackground(WHITE); textcolor(BLACK); clrscr(); window(4,1,19,12); gotoxy(1,1); putch(0xDA); /*作一个单线矩形边框*/ for(i=2;i<16;i++) putch(0xc4);="">16;i++)> putch(0xBF); for(i=2;i<10;i++)>10;i++)> {gotoxy(1,i);putch(0xB3); gotoxy(16,i);putch(0xB3); } gotoxy(1,10); putch(0xC0); for(i=2;i<16;i++) putch(0xc4);="">16;i++)> putch(0xD9); for(i=1;i<10;i++) 显示file子菜单内容*/="">10;i++)> {gotoxy(2,i+1); cprintf("%s",f[i-1]); } gettext(2,2,18,3,buf1); /*保存产生色棒前的原来信息*/ textbackground(BLACK); /*产生一个色棒*/ textcolor(WHITE); gotoxy(2,2); cprintf("%s",f[0]); y=2; key0=0; while(key0!=27&&key0!=13) /*输入为ESC或回车键则退出循环*/ { while(bioskey(1)==0); /*等待键盘输入*/ key0=key1=bioskey(0); /*取键盘输入码*/ key0=key0&0xFF; /*只取ASCII码*/ key1=key1&0xFF?0:key1>>8; /*屏蔽低8位,只取扩充键码*/ if(key1==72||key1==80) /*如果为上、下箭头键*/ {puttext(2,y,18,y+1,buf1); /*恢复保存在buf1的屏幕内容*/ if(key1==72) y=y==2?10:y-1; /*上箭头处理*/ if(key1==80) y=y==10?2:y+1; /*下箭头处理*/ gettext(2,y,18,y+1,buf1); /*保存新色棒产生前屏幕区域的内容*/ textbackground(BLACK); /*产生新色棒*/ textcolor(WHITE); gotoxy(2,y); cprintf("%s",f[y-2]); } test=y-1; } if(key0==13) /*输入回车键对子菜单操作的处理(简化)*/ {switch(test) {case 1:break; case 2:break; /*此处为case 3到case 8*/ case 9:exit(0); default:break; } } window(1,1,80,2); puttext(1,1,80,2,buf0); /*恢复主菜单*/ puttext(4,2,19,11,buf); /*释放子菜单窗口*/ } } } 本文中我们介绍用Illustrator的扭曲变形工具复制不同角度的基础形状,得到仿螺旋线的图案。 我们从一个简单的形状开始,选择菜单“在效果>扭曲和变换>变换”,勾选预览框。画一个椭圆,复制12个副本,调整垂直百分比和旋转角度。我也改变定位点。效果合适以后单击确定。 现在将形状拖进图形样式面板。 当你在其它的对象上应用你的这个样式的时候,看会发生什么。画一个形状并单击这个新样式。 现在让我们通过"混合"来得到一些更有趣的效果。扩展样式对象(对象>扩展外观)并对结果进行解组。双击混合工具并在指定步数框中输入一个数字。 现在选择所有的形状。按下ctrl+alt+B应用混合工具。 在中间看到多边形的形状了吗,那是混合的骨架。现在画另一个路径并且通过“对象> 混合>替换混合轴”去混合下面新的路径。 下面制作一个渐变的外观,使用直接选择工具,选择每一个椭圆并改变颜色。 如果你还想得到更迷幻的感觉,可以选择混合工具,并对其应用你的样式,使它做更多 的重复和旋转。 练习,绘制一个三维螺旋线线框 在该练习中,试用3 D P O LY命令来绘制一条螺旋线。螺旋线是由一直线缠绕一圆柱体而形 成的。螺纹线、线圈、弹簧、螺旋形楼梯和头 发卷都是基于螺旋线的实例。每条螺旋线至少 有二个尺寸参数—直径和螺距。如图3 - 2 9所 示,直径是圆柱体的宽度,螺距是螺旋线绕圆 柱体从开始点到完成旋转一周结束点两点之间 沿圆柱体轴向的距离。虽然直径和螺距都不必 保持恒定不变,但在练习中假设它们不变。 假定螺旋线的直径为2个单位,螺距为1个 单位。指向为Z方向或者沿Z方向上升。螺旋线 由短而直的三维多段线组成。其每一线段的尾 部到其开始处都以一定的角度从螺旋中心等距 离偏移,在高度方向一个个加上去。假定每一 个等距离偏移的角度为4 5?,即绕螺旋线的中 心线分八次完成绕转一周, 3 6 0?除以4 5?,, 因为螺距是1个单位,则每一段终端将比其开始 端高1 / 8个单位,每周一个单位除以每周8段,, 这些尺寸如图3 - 3 0所示。 我们用柱面坐标来绘制螺旋线。第2章曾介绍过柱面坐标是简单的极坐标加一个高度。它 们的形式是,图3-29 半径<角度,标高在输入柱面坐标来绘制该螺旋线时,半径保持为1不变,角度以4>角度,标高在输入柱面坐标来绘制该螺旋线时,半径保持为1不变,角度以4> 个标高比前一个标高增加0 . 1 2 5单位。螺旋线的中心保持在原始位置而与相对坐标无关。绘制 螺旋线命令的系列提示和输入是, Command: 3 D P O LY Specify start point of polyline: 1 < 0="" ,="" 0=""> Specify endpoint of line or [Undo]: 1 < 4="" 5="" ,="" .="" 1="" 2="" 5="" specify="" endpoint="" of="" line="" or="" [undo]:="" 1="">< 9="" 0="" ,="" .="" 2="" 5="" specify="" endpoint="" of="" line="" or="" [close/undo]:="" 1="">< 1="" 3="" 5="" ,="" .="" 3="" 7=""> Specify endpoint of line or [Close/Undo]: 1 < 1="" 8="" 0="" ,="" .="" 5=""> Specify endpoint of line or [Close/Undo]: 1 < 2="" 2="" 5="" ,="" .="" 6="" 2="" 5=""> Specify endpoint of line or [Close/Undo]: 1 < 2="" 7="" 0="" ,="" .="" 7="" 5=""> Specify endpoint of line or [Close/Undo]: 1 < 3="" 1="" 5="" ,="" .="" 8="" 7="" 5=""> Specify endpoint of line or [Close/Undo]: 1 < 0="" ,="" 1=""> 虽然只画完一圈,但是可以照此继续画下去。所得螺旋线如图3 - 3 1所示。尽管它非常粗 糙而不会给你留下很深的印象,但能够非常容易地通过使用P E D I T命令将其转化成样条曲线, 使其变得光滑。如图3 - 3 2所示螺旋线与上例相比除了圈数增加为二圈并已用P E D I T命令使其 变成了样条曲线之外,其余的参数是相同的。 提示粗糙和光滑的两种螺旋线都在本书所附的光盘3d_p3_01.dwg文件中。我们将在以 后的章节中解释样条曲线和PEDIT命令。 有了一根粗糙的螺旋线,假如想使其光滑变成样条曲线,甚至少到每圈只有四段线,也 是可以的,虽然两个终端的形状可能不是令人满 意的。假如用螺旋线作为一个A u t o C A D面的边界, 因为A u t o C A D面,我们将在第4章中描述, 是用短 而直的终端线段近似曲线的边界,所以光滑螺 旋 线只需很少的点。同样在第5章中涉及到实体 模型 时,由线段组成的三维多段线可能被用作生成 挤 出实体的轨迹,而那些已转化成样条曲线的线 则 是不可能的。 当用先前练习的技巧去绘制螺旋线时,会有两 个容易出错的地方。第一,当等距离偏移部分时, 会产生计算错误。第二,当输入柱面坐标时,可能会产生输入错误。命令组, s c r i p t,文件是 一种可以减少后者错误的好方法。它可提供一个纠正输入错误的机会。假如不能得到预期螺旋 线,可以编辑命令组文件和用最少的精力重画。命令组文件也是生成特殊形状的螺旋线,如那 些尾端是平的或者向外张开的螺旋线,其螺距和直径是可变的,最容易的方法(见图3 - 3 3)。 但是命令组文件并不能够代替计算螺旋线等距离偏移和输入柱面坐标。另一方面, A u t o L I S P能够弥补这种重复劳动的不足。虽然公共的绘制螺旋线和螺旋形线的A u t o L I S P程序有很多,但是假如没有其他可利用的程序,那么下面有一个简单的程序供你参考。该程序同 样在本书附带的光盘上也有。程序用一条三维多段线生成一个螺旋线线框,它能够生成一个 直径随着每一圈增加的螺旋线。程序提示请求输入螺旋线开始的半径,半径每周都是变化的,、 圈数和每圈分成的线段数。每周的线段数应用一个相对大一些的数字,这样就可以生成一条 甚至没有转变成样条曲线就已非常光滑的螺旋线。 程序同样提示输入一个点,在该点上设置螺旋线的中心线,它可以在X Y平面上的任何地 方,和从中心线到螺旋线起点的方向,我们已经方便地开始从中心线手工绘制螺旋线0?,, 生成的螺旋线伸向Z方向。 该程序练习绘制螺旋线的基本方法是输入柱面坐标。但是因为A u t o L I S P没有柱面坐标的 功能,所以程序必须使每一根多段线线段在Z方向上逐步增加,然后再用极坐标。 三维螺旋线A u t o L I S P程序 ; HELIX.LSP ; Draws a 3D wireframe helix using a 3D polyline (defun C:HELIX ( / cm bm cen radius r_inc r_del pitch angle revs div angInc z_inc steps x y z n) (setq cm (getvar “C M D E C H O”) ;save current settings B L I P M O D E”) ) bm (getvar “ (setvar “C M D E C H O” 0 ) ; get user input (setq cen (getpoint “\nCenter point for the helix: ”) radius (getdist cen “\nInitial radius of helix: “) r_inc(getdist cen “\nRadius increment per revolution: “) pitch (getdist cen “\nPitch of helix: “) angle (getangle cen “\nDirection from center to helix start point: “) revs (getreal “\nNumber of revolutions? “) div (getint “\nNumber of divisions per revolution? “) angInc (/ 6.283185307 div); 6.283185307 is 2PI z_inc (/ pitch div) steps (* div revs) ; the total number of segments in the helix x (car cen) ; get the X coordlinate form the center point y (cadr cen) ; get the Y cooudinate from the center point z (caddr cen) ; get the Z cooudinate from the center point n 0 r_del (/ r_inc div) ) (setvar “B L I P M O D E” 0 ) (command “3 D P O LY” (polar cen angle radius)) ; begin drawing the helix (while (< n="" steps)=""> (setq angle (+ angle angInc) z (+ z z_inc) cen (list x y z) n (1+ n) ; incrementn by one radius (+ radius r_del) ) (command (polar cen angle radius)) ) ; end while (command “”) ; finish drawing the helix B L I P M O D E” bm) ; restore settings (setvar “ (setvar “C M D E C H O” c m ) ) ; end function helix范文四:Illustrator绘制仿螺旋线彩色图案
范文五:绘制一个三维螺旋线线框.doc