包含交叉图形消隐程序源码的词条
本文目录一览:
- 1、求C源码:计算机图形学程序——扫描线算法
- 2、AE两张图叠加后如何隐藏图形外的区域
- 3、在TC中,立体图形的消隐代码是什么?知道的请把程序写下
- 4、matlab 图形交叉到一起,怎么处理可以显示重叠部分
- 5、vtk 中如何对图形进行消隐处理
求C源码:计算机图形学程序——扫描线算法
这是我以前上学的时候写的,你改改,凑活用巴。
=============================
#include graphics.h
#include stdio.h
#include dos.h
#include math.h
#include bios.h
#include string.h
void parspl ( int p[10000][2] , long n , int precision , int color )
{
int x = 0 , y = 0 , i = 0 , j = 0 , m = 0 ;
double t2 = 0 , t3 = 0 , t = 0 , a , b , c , d , e = p[1][0] + 5 , f = p[1][1] + 5 ;
setcolor ( color ) ;
m=n+1;
p[0][0] = p[n][0] ;
p[0][1] = p[n][1] ;
p[m][0] = p[1][0] ;
p[m][1] = p[1][1] ;
p[m+1][0] = p[2][0] ;
p[m+1][1] = p[2][1] ;
moveto ( p[1][0] , p[1][1] ) ;
for ( i = 0 ; i n ; i ++ )
{
t = 0.5 / precision ;
for ( j = 1 ; j precision ; j ++ )
{
t2 = t * t ;
t3 = t2 * t ;
a = 4 * t2 - t - 4 * t3 ;
b = 1 - 10 * t2 + 12 * t3 ;
c = t + 8 * t2 - 12 * t3 ;
d = 4 * t3 - 2 * t2 ;
x = a * p[i][0] + b * p[i+1][0] + c * p[i+2][0] + d * p[i+3][0] ;
y = a * p[i][1] + b * p[i+1][1] + c * p[i+2][1] + d * p[i+3][1] ;
lineto ( x , y ) ;
line ( e , f , x + 5 , y + 5 ) ;
moveto ( x , y ) ;
t += 0.5 / precision ;
e = x + 5 ;
f = y + 5 ;
}
lineto ( p[i+2][0] , p[i+2][1] ) ;
moveto ( e , f ) ;
lineto ( p[i+2][0] + 5 , p[i+2][1] + 5 ) ;
moveto ( p[i+2][0] , p[i+2][1] ) ;
}
}
int main()
{
long n = 5 ;
char pwd[4] ;
int p[100][2] ;
int a1 , a2 , b1 , b2 , c1 , c2 , d1 , d2 , e1 , e2 ;
int gdriver = VGA , gmode = VGAHI ;
initgraph( gdriver , gmode , "c:\\tc" ) ;
setbkcolor ( 0 ) ;
a1 = p[1][0] = 320 ;
a2 = p[1][1] = 240 ;
b1 = p[2][0] = 320 ;
b2 = p[2][1] = 120 ;
c1 = p[3][0] = 452 ;
c2 = p[3][1] = 128 ;
d1 = p[4][0] = 382 ;
d2 = p[4][1] = 388 ;
e1 = p[5][0] = 364 ;
e2 = p[5][1] = 280 ;
loop:
if ( a1 = p[1][0] p[1][0] = 520 )
{
a1 = p[1][0] ;
p[1][0] += 1 ;
}
else
{
if ( p[1][0] = 120 )
{
a1 = p[1][0] ;
p[1][0] -= 1 ;
}
else
a1 = p[1][0] = 120 ;
}
if ( a2 = p[1][1] p[1][1] = 60 )
{
a2 = p[1][1] ;
p[1][1] -= 2 ;
}
else
{
if ( p[1][1] = 420 )
{
a2 = p[1][1] ;
p[1][1] += 2 ;
}
else
a2 = p[1][1] = 420 ;
}
if ( b1 = p[2][0] p[2][0] = 120 )
{
b1 = p[2][0] ;
p[2][0] -= 2 ;
}
else
{
if ( p[2][0] = 520 )
{
b1 = p[2][0] ;
p[2][0] += 2 ;
}
else
b1 = p[2][0] = 520 ;
}
if ( b2 = p[2][1] p[2][1] = 420 )
{
b2 = p[2][1] ;
p[2][1] += 1 ;
}
else
{
if ( p[2][1] = 60 )
{
b2 = p[2][1] ;
p[2][1] -= 1 ;
}
else
b2 = p[2][1] = 60 ;
}
if ( c1 = p[3][0] p[3][0] = 520 )
{
c1 = p[3][0] ;
p[3][0] += 1 ;
}
else
{
if ( p[3][0] = 120 )
{
c1 = p[3][0] ;
p[3][0] -= 1 ;
}
else
c1 = p[3][0] = 120 ;
}
if ( c2 = p[3][1] p[3][1] = 420 )
{
c2 = p[3][1] ;
p[3][1] += 1 ;
}
else
{
if ( p[3][1] = 60 )
{
c2 = p[3][1] ;
p[3][1] -= 1 ;
}
else
c2 = p[3][1] = 60 ;
}
if ( d1 = p[4][0] p[4][0] = 120 )
{
d1 = p[4][0] ;
p[4][0] -= 1 ;
}
else
{
if ( p[4][0] = 520 )
{
d1 = p[4][0] ;
p[4][0] += 1 ;
}
else
d1 = p[4][0] = 520 ;
}
if ( d2 = p[4][1] p[4][1] = 60 )
{
d2 = p[4][1] ;
p[4][1] -= 1 ;
}
else
{
if ( p[4][1] = 420 )
{
d2 = p[4][1] ;
p[4][1] += 1 ;
}
else
d2 = p[4][1] = 420 ;
}
if ( e1 = p[5][0] p[5][0] = 520 )
{
e1 = p[5][0] ;
p[5][0] += 1 ;
}
else
{
if ( p[5][0] = 120 )
{
e1 = p[5][0] ;
p[5][0] -= 1 ;
}
else
e1 = p[5][0] = 120 ;
}
if ( e2 = p[5][1] p[5][1] = 420 )
{
e2 = p[5][1] ;
p[5][1] += 2 ;
}
else
{
if ( p[5][1] = 60 )
{
e2 = p[5][1] ;
p[5][1] -= 2 ;
}
else
e2 = p[5][1] = 60 ;
}
parspl ( p , n , 100 , 4 ) ;
parspl ( p , n , 100 , 4 ) ;
if ( bioskey ( 1 ) 0 )
{
printf ("Please Input Password:") ;
gets (pwd) ;
if ( !strcmp(pwd,"cmy") )
{
clearviewport () ;
closegraph () ;
return 1 ;
}
}
cleardevice () ;
goto loop ;
}
AE两张图叠加后如何隐藏图形外的区域
按以下步骤操作:
1、打开状态栏中的“消隐”总开关。
2、勾选需要暂时消失图层的“消隐”开关。
3、打开消隐后即可隐藏。
Adobe After Effects简称“AE”是Adobe公司推出的一款图形视频处理软件,适用于从事设计和视频特技的机构,包括电视台、动画制作公司、个人后期制作工作室以及多媒体工作室。属于层类型后期软件。
在TC中,立体图形的消隐代码是什么?知道的请把程序写下
呵呵,同意楼上说的。
没有消隐这一说的。
C的图形界面一般来说都是字符界面下的图形界面,所谓你看到的消隐,这是利用人类的视觉达到的。是这么实现的,假设你在坐标为(A,B,C,D)的位置画了一个图形,(A,B为图形所在区域的左上角坐标,C,D为图形所在区域的右下角坐标),此时图形的背景颜色为颜色E(默认是黑色,下面也用黑色举例),如果你想“消隐”你的图形的画,你需要先用一个变量保存的画笔颜色,然后重新设置你的画笔颜色为当前背景色E,也就是黑色,然后在(A,B,C,D)区域画一个黑色矩形,那么之前你画的图形就被“抹掉了”,就实现了你说的“消隐”效果;然后恢复你画笔颜色就可以了。
注意,千万要记得保存当前画笔颜色,操作完毕也要恢复画笔颜色!
matlab 图形交叉到一起,怎么处理可以显示重叠部分
如果是patch类的图案,可以通过设置其透明属性来处理重叠现象,即将其'FaceAlpha'属性设为0至1之前的数字,例如:
figure
patch([0 1 .5],[0 0 1],[1 0 0],'FaceAlpha',.5);
patch([0 1 .5]+.5,[0 0 1],[1 0 0],'FaceAlpha',.3);
可以得到如下的效果。(Matlab R2017a)
vtk 中如何对图形进行消隐处理
vtk 中使用深度缓存区(Depth Buffer)来进行消隐处理(隐藏面消除),以确保实体被遮挡的部分不被显示..