本文目录一览:
- 1、matlab利用MATLAB嵌套函数表示3D作图
- 2、MMsegmentation教程 6: 自定义运行设定
- 3、maple求解微积分
- 4、3dmax编辑网格怎么添加可编辑的顶点和线?
- 5、如何查找自己想要的GDI函数.
- 6、飞哥与小佛:超时空之谜的剧情简介
matlab利用MATLAB嵌套函数表示3D作图
function RandDisplayJiong
axis off;
set(gcf,'menubar','none','toolbar','none');
for k=1:50
h=text(rand,rand,...
['\fontsize{',num2str(unifrnd(20,50)),'}\fontname{隶书}囧'],...
'color',rand(1,3),'Rotation',360*rand);
pause(0.2);
end
function T=cat_in_holl(n)
T=zeros(1,n);
for k=1:n
c=unidrnd(3,1);
while c~=1
if c==2
T(k)=T(k)+4;
else
T(k)=T(k)+6;
end
c=unidrnd(3,1);
end
T(k)=T(k)+2;
end
》z=cat_in_holl(10000);
function example2_3_6slow
A=unidrnd(100,100,7);
B=zeros(100,3);
tic;
for m=1:100
a=A(m,:);
b=[4,6,8];
for ii=1:3
dd=a(a==b(ii));
if isempty(dd)==0
b(ii)=0;
end
end
B(m,:)=b;
end
toc
end
function example2_3_6fast2
clear
A=unidrnd(100,1000000,7);
B=repmat([4,6,8],1000000,1);
tic;
C=[any(A==4,2) any(A==6,2) any(A==8,2)];
B(C)=0;B
toc
function triangle_table
fig = figure('defaultuicontrolunits','normalized','name','triangle_table',...
'numbertitle','off','menubar','none');
ah = axes('Pos',[.1 .2 .75 .75],'Visible','off');
slider_h = uicontrol('style','slider','units','normalized','pos',...
[0.1,0.05,0.75,0.05],'sliderstep',[1/6,0.05],'callback',@change_color);
hold on
for k = 0:6
plot(0:6-k,(6-k)*ones(1,(7-k)),'k');
plot(k*ones(1,(7-k)),k:6,'k');
end
plot([0,6],[0,6],'k');
hold off;
for x = 1:5
for y = 1:x
text(y-0.5,x+0.5,num2str(x),'color','k','tag','数字');
end
end
for k = 0:5
text(k+0.1,k+0.5,[num2str(k),'.5'],'tag','数字');
end
function change_color(hObject,eventdata)
v = round(6*get(slider_h,'value'));
num_h = findobj('tag','数字');
num_pos = get(num_h,'pos');
red_num_logic = cellfun(@(x) (x(1)=vx(2)=v),num_pos);
set(num_h(red_num_logic),'color','r');
set(num_h(~red_num_logic),'color','k');
end
end
function [m,n,TT]=plot3dnmT(N,L)
C=zeros(N,1);
m=linspace(0,2,L);
[m,n]=meshgrid(m,m);
TT=zeros(size(n));
for ii=1:L
for jj=1:L
TT(ii,jj)=calcT(m(ii,jj),n(ii,jj));
end
end
function Tmn=calcT(mm,nn)
for N1=1;N
C(N1)=(mm^N1/gamma(N1+1))*sum(nn.^(0:N1-1)./gamma(1:N1));
Tmn=1.0-exp(-mm-nn)*sum(C);
end
end
mesh(n,m,TT);
end
》[m,n,TT]=plot3dnmT(30,30);
function [mx,minf]=randwalk(f,x,lamda,epsilon,N)
f1=f(x(1),x(2));
while(lamda=epsilon)
k=1;
while(k=N)
u=unifrnd(-1,1,1,2);
x1=x+lamda*(u/norm(u));
f11=f(x1(1),x1(2));
if f11f1
f1=f11;
x=x1;
k=1;
else
k+k+1;
end
end
lamda=lamda/2;
end
mx=x1;
minf=f1;
f=@(x)-sin(sqrt((x(1)-50)^2+(x(2)-50)^2)+exp(1))/(sqrt((x(1)-50)^2+(x(20)-50)^2)+exp(1))-1;
f2=@(x,y)-sin(sqrt((x-50).^2+(y-50).^2)+exp(1))./(sqrt((x-50).^2+(y-50).^2)+exp(1))-1;
[x,fval]=fminsearch(f,[49,49],optimset('TolX',1e-8))
function [mx,minf]=randwalknew(f,x,lamda,epsilon,N,n)
F=zeros(n,1);
X=zeros(n,2);
f1=f(x(1),x(2));
while(lamda=epsilon)
k=1;
while(k=N)
u=unifrnd(-1,1,n,2);
for ii=1:n
X(ii,:)=x+lamda*(u(ii,:)/norm(u(ii,:)));
F(ii)=f(X(ii,1),X(ii,2));
end
[f11,kk]=min(F);
if f11f1
f1=f11;
x=X(kk,:);
k=1;
else
k=k+1;
end
end
lamda=lamda/2;
end
mx=X(kk,:);
minf=f1;
》f2=@(x,y)-sin(sqrt((x-50).^2+(y-50).^2)+exp(1))./(sqrt((x-50).^2+(y-50).^2)+exp(1))-1;
》 [mx,minf]=randwalknew(f2,[0,0],10,0.00001,1000,10)
function DuckLakeSegmentation
[filename,pathname,flag]=uigetfile('*.jpg','请导入图像文件');
Duck=imread([pathname,filename]);
LakeTrainData=[52 74 87;76 117 150;19 48 62;35 64 82;46 58 36;...
50 57 23;110 127 135;156 173 189;246 242 232;...
166 174 151];
DuckTrainData=[211 192 107;202 193 164;32 25 0;213 201 151;115 75 16;...
101 70 0;169 131 22;150 133 87];
group=[zeros(size(LakeTrainData,1),1);ones(size(DuckTrainData,1),1)];
LakeDuckSVM=svmtrain([LakeTrainData;DuckTrainData],group,...
'Kernel_Function','polynomial','Polyorder',2);
[m,n,k]=size(Duck);
Duck1=double(reshape(Duck,m*n,k));
IndDuck=svmclassify(LakeDuckSVM,Duck1);
IndLake=~IndDuck;
result=reshape([IndLake,IndLake,IndLake],[m,n,k]);
Duck2=Duck;
Duck2(result)=0;
figure
imshow(Duck2)
function example12_2_1
TimerA=timer('timerfcn',@TimerFun,'StartDelay',unidrnd(5000,1)/1000,...
'executionmode','fixedrate');
set(TimerA,'userdata',0);
num=5;
start(TimerA)
function TimerFun(obj,event)
set(TimerA,'userdata',get(TimerA,'userdata')+1);
disp(['间隔时间为',num2str(get(TimerA,'startDelay')),'S!']);
disp('Hello World!');
stop(TimerA);
set(TimerA,'StartDelay',unidrnd(5000,1)/1000);
start(TimerA);
while get(TimerA,'userdata')==num
stop(TimerA)
return;
end
end
end
MMsegmentation教程 6: 自定义运行设定
我们已经支持 PyTorch 自带的所有优化器,唯一需要修改的地方是在配置文件里的 optimizer 域里面。
例如,如果您想使用 ADAM (注意如下操作可能会让模型表现下降),可以使用如下修改:
为了修改模型的学习率,使用者仅需要修改配置文件里 optimizer 的 lr 即可。
使用者可以参照 PyTorch 的 API 文档
直接设置参数。
一个自定义的优化器可以按照如下去定义:
假如您想增加一个叫做 MyOptimizer 的优化器,它的参数分别有 a , b , 和 c 。
您需要创建一个叫 mmseg/core/optimizer 的新文件夹。
然后再在文件,即 mmseg/core/optimizer/my_optimizer.py 里面去实现这个新优化器:
为了让上述定义的模块被框架发现,首先这个模块应该被导入到主命名空间 (main namespace) 里。
有两种方式可以实现它。
mmseg.core.optimizer.my_optimizer 模块将会在程序运行的开始被导入,并且 MyOptimizer 类将会自动注册。
需要注意只有包含 MyOptimizer 类的包 (package) 应当被导入。
而 mmseg.core.optimizer.my_optimizer.MyOptimizer 不能 被直接导入。
事实上,使用者完全可以用另一个按这样导入方法的文件夹结构,只要模块的根路径已经被添加到 PYTHONPATH 里面。
之后您可以在配置文件的 optimizer 域里面使用 MyOptimizer
在配置文件里,优化器被定义在 optimizer 域里,如下所示:
为了使用您自己的优化器,这个域可以被改成:
有些模型可能需要在优化器里有一些特别参数的设置,例如 批归一化层 (BatchNorm layers) 的 权重衰减 (weight decay)。
使用者可以通过自定义优化器的构造器去微调这些细粒度参数。
默认的优化器构造器的实现可以参照 这里 ,它也可以被用作新的优化器构造器的模板。
优化器没有实现的一些技巧应该通过优化器构造器 (optimizer constructor) 或者钩子 (hook) 去实现,如设置基于参数的学习率 (parameter-wise learning rates)。我们列出一些常见的设置,它们可以稳定或加速模型的训练。
如果您有更多的设置,欢迎在 PR 和 issue 里面提交。
我们根据默认的训练迭代步数 40k/80k 来设置学习率,这在 MMCV 里叫做 PolyLrUpdaterHook 。
我们也支持许多其他的学习率计划表: 这里 ,例如 CosineAnnealing 和 Poly 计划表。下面是一些例子:
工作流是一个专门定义运行顺序和轮数 (running order and epochs) 的列表 (phase, epochs)。
默认情况下它设置成:
意思是训练是跑 1 个 epoch。有时候使用者可能想检查模型在验证集上的一些指标(如 损失 loss,精确性 accuracy),我们可以这样设置工作流:
于是 1 个 epoch 训练,1 个 epoch 验证将交替运行。
注意 :
如果钩子已经在 MMCV 里被实现,如下所示,您可以直接修改配置文件来使用钩子:
以下的常用的钩子没有被 custom_hooks 注册:
在这些钩子里,只有 logger hook 有 VERY_LOW 优先级,其他的优先级都是 NORMAL 。
上述提及的教程已经包括了如何修改 optimizer_config , momentum_config 和 lr_config 。
这里我们展示我们如何处理 log_config , checkpoint_config 和 evaluation 。
MMCV runner 将使用 checkpoint_config 去初始化 CheckpointHook .
使用者可以设置 max_keep_ckpts 来仅保存一小部分检查点或者通过 save_optimizer 来决定是否保存优化器的状态字典 (state dict of optimizer)。 更多使用参数的细节请参考 这里 。
log_config 包裹了许多日志钩 (logger hooks) 而且能去设置间隔 (intervals)。现在 MMCV 支持 WandbLoggerHook , MlflowLoggerHook 和 TensorboardLoggerHook 。
详细的使用请参照 文档 。
evaluation 的配置文件将被用来初始化 EvalHook 。
除了 interval 键,其他的像 metric 这样的参数将被传递给 dataset.evaluate() 。
maple求解微积分
要查询 Maple 库函数和命令的意义和用法,只需在 Maple 界面命令行中输入:
?命令名称
?程序包名称
要调用程序包,只需在命令行中输入:
with(程序包名称)
例如:
?int 查询用关于积分命令 int 的帮助信息
?Calculus 查询关于微积分程序包的帮助信息
with(Calculus1) 调用微积分程序包 Calculus1 的所有命令
附:Maple 18 中的标准库函数和顶层命令,共 599 个
!
about
abs
add
addcoords
additionally
addproperty
addressof
AFactor
AFactors
AIrreduc
AiryAi
AiryAiZeros
AiryBi
AiryBiZeros
algsubs
alias
allvalues
anames
andmap
AngerJ
apply
applyop
applyrule
arccos
arccosh
arccot
arccoth
arccsc
arccsch
arcsec
arcsech
arcsin
arcsinh
arctan
arctanh
ArrayDims
ArrayElems
ArrayIndFns
ArrayNumDims
assemble
assign
assume
assuming
asympt
attributes
BellB
Berlekamp
bernoulli
bernstein
BernsteinBasis
BesselI
BesselJ
BesselJZeros
BesselK
BesselY
BesselYZeros
Beta
binomial
branches
Cache
cat
ceil
changecoords
charfcn
Charpoly
ChebyshevT
ChebyshevU
CheckArgs
Chi
chrem
Ci
close
coeff
coeffs
coeftayl
collect
colondash
combine
comparray
compiletable
CompleteBellB
Complex
ComplexRange
compoly
CompSeq
Content
content
convergs
copy
CopySign
cos
cosh
cot
coth
coulditbe
CoulombF
csc
csch
currentdir
CylinderD
CylinderU
CylinderV
D
Default0
DefaultOverflow
DefaultUnderflow
define
define_external
definemore
degree
denom
depends
DESol
Det
diff
Diff
Digits
dilog
dinterp
Dirac
disassemble
discont
discrim
dismantle
DistDeg
Divide
divide
doublefactorial
dsolve
Ei
eliminate
ellipsoid
EllipticCE
EllipticCK
EllipticCPi
EllipticE
EllipticF
EllipticK
EllipticPi
entries
EqualEntries
Equate
erf
erfc
erfi
euler
eulermac
Eval
eval
evala
evalapply
evalb
evalc
evalf
evalhf
evalindets
evalr
evalrC
exists
exp
expand
Expand
expandoff
expandon
Explore
ExportMatrix
exports
ExportVector
extrema
factor
Factor
factorial
factors
Factors
fclose
fdiff
fdiscont
feof
fflush
fixdiv
float
floor
fnormal
fold
fopen
forall
forget
fprintf
frac
fracdiff
Fraction
freeze
frem
fremove
FresnelC
Fresnelf
Fresnelg
FresnelS
Frobenius
FromInert
frontend
fscanf
fsolve
FunctionAdvisor
galois
GAMMA
Gausselim
Gaussjord
gcd
Gcd
gcdex
Gcdex
GegenbauerC
genpoly
getassumptions
getenv
GF
grelgroup
HankelH1
HankelH2
has
hasassumptions
hasfun
hasoption
hastype
Heaviside
Hermite
HermiteH
hermitian
Hessenberg
HeunB
HeunBPrime
HeunC
HeunCPrime
HeunD
HeunDPrime
HeunG
HeunGPrime
HeunT
HeunTPrime
hfarray
HFloat
history
hypergeom
icontent
identify
identity
ifactor
ifactors
igcd
igcdex
ilcm
ilog10
ilog2
ilog[b]
Im
implicitdiff
ImportMatrix
ImportVector
in
IncompleteBellB
Indep
indets
indices
initialcondition
initialconstants
initialfunctions
insertpattern
Int
int
intat
Intat
Interp
interp
intsolve
Inverse
InverseJacobiAM
InverseJacobiCD
InverseJacobiCN
InverseJacobiCS
InverseJacobiDC
InverseJacobiDN
InverseJacobiDS
InverseJacobiNC
InverseJacobiND
InverseJacobiNS
InverseJacobiSC
InverseJacobiSD
InverseJacobiSN
invfunc
invztrans
iperfpow
iquo
iratrecon
irem
iroot
irreduc
Irreduc
is
iscont
isdifferentiable
IsMatrixShape
isolate
isolve
ispoly
isprime
isqrfree
isqrt
Issimilar
issqr
IsVectorShape
ithprime
JacobiAM
JacobiCD
JacobiCN
JacobiCS
JacobiDC
JacobiDN
JacobiDS
JacobiNC
JacobiND
JacobiNS
JacobiP
JacobiSC
JacobiSD
JacobiSN
JacobiTheta1
JacobiTheta2
JacobiTheta3
JacobiTheta4
KelvinBei
KelvinBer
KelvinHei
KelvinHer
KelvinKei
KelvinKer
KummerM
KummerU
LagrangeBasis
LaguerreL
Lcm
lcm
lcoeff
ldegree
leadterm
LegendreP
LegendreQ
length
LerchPhi
lhs
limit
Limit
Linsolve
ln
lnGAMMA
log
log10
LommelS1
LommelS2
lowerbound
lprint
map
map2
Maple_floats
maptype
match
MathieuA
MathieuB
MathieuC
MathieuCE
MathieuCEPrime
MathieuCPrime
MathieuExponent
MathieuFloquet
MathieuFloquetPrime
MathieuS
MathieuSE
MathieuSEPrime
MathieuSPrime
Matrix
MatrixOptions
max
maximize
maxnorm
MeijerG
member
membertype
min
minimize
mod
modp
modp1
modp2
modpol
mods
module
MOLS
msolve
mtaylor
mul
NewtonBasis
NextAfter
Nextpoly
Nextprime
nextprime
nops
norm
Normal
normal
nprintf
Nullspace
numboccur
numelems
numer
NumericClass
odetest
op
order
OrderBasis
OrderedNE
ormap
packages
patmatch
Perm
permgroup
plot
plot3d
plotsetup
pochhammer
PochhammerBasis
pointto
poisson
polylog
Power
powmod
Powmod
prem
Prem
Prevpoly
Prevprime
prevprime
Primfield
Primitive
Primpart
primpart
print_preprocess
printf
proc
product
Product
proot
property
protect
Psi
psqrt
quo
Quo
radfield
radnormal
rand
randomize
randpoly
Randpoly
Randprime
rationalize
ratrecon
Ratrecon
Re
readbytes
readline
readstat
RealRange
realroot
redefine
Reduce
rem
Rem
remove
residue
RESol
resultant
Resultant
rhs
Rif
root
rootbound
roots
Roots
round
Rounding
rsolve
rtable_dims
rtable_elems
rtable_num_dims
rtable_num_elems
scalar
Scale10
Scale2
scanf
searchtext
SearchText
sec
sech
select
selectfun
selectremove
seq
series
setattribute
SFloatExponent
SFloatMantissa
shake
Shi
showtime
Si
sign
signum
Simplify
simplify
sin
singular
sinh
sinterp
smartplot
smartplot3d
Smith
sort
sparse
SphericalY
sprem
SPrem
sprintf
sqrfree
Sqrfree
sqrt
sscanf
Ssi
ssystem
Stirling1
Stirling2
StruveH
StruveL
sturm
sturmseq
Subfields
subs
subsindets
subsop
substring
subtype
sum
Sum
surd
symmdiff
table
tablelook
tan
tanh
taylor
tcoeff
testeq
testfloat
thaw
ToInert
TopologicalSort
Trace
traperror
trigsubs
trunc
type
typematch
unames
unapply
unassign
undefine
Unordered
unprotect
unwindK
unwith
upperbound
value
Vandermonde
Vector
verify
WARNING
WeberE
WeierstrassP
WeierstrassPPrime
WeierstrassSigma
WeierstrassZeta
whattype
WhittakerM
WhittakerW
with
Wrightomega
zip
ztrans
3dmax编辑网格怎么添加可编辑的顶点和线?
你可以先去【绘学霸】网站找“3d建模”板块的【免费】视频教程-【点击进入】完整入门到精通视频教程列表: ;tagid=307zdhhr-11y04r-536472121
想要系统的学习可以考虑报一个网络直播课,推荐CGWANG的网络课。老师讲得细,上完还可以回看,还有同类型录播课可以免费学(赠送终身VIP)。
自制能力相对较弱的话,建议还是去好点的培训机构,实力和规模在国内排名前几的大机构,推荐行业龙头:王氏教育。
王氏教育全国直营校区面授课程试听【复制后面链接在浏览器也可打开】: ;zdhhr-11y04r-536472121
在“3d建模”领域的培训机构里,【王氏教育】是国内的老大,且没有加盟分校,都是总部直营的连锁校区。跟很多其它同类型大机构不一样的是:王氏教育每个校区都是实体面授,老师是手把手教,而且有专门的班主任从早盯到晚,爆肝式的学习模式,提升会很快,特别适合基础差的学生。
大家可以先把【绘学霸】APP下载到自己手机,方便碎片时间学习——绘学霸APP下载:
如何查找自己想要的GDI函数.
图形和图像函数包含在graphics.h里面
(一) 像素函数
56. putpiel() 画像素点函数
57. getpixel()返回像素色函数
(二) 直线和线型函数
58. line() 画线函数
59. lineto() 画线函数
60. linerel() 相对画线函数
61. setlinestyle() 设置线型函数
62. getlinesettings() 获取线型设置函数
63. setwritemode() 设置画线模式函数
(三)、多边形函数
64. rectangle() 画矩形函数
65. bar() 画条函数
66. bar3d() 画条块函数
67. drawpoly() 画多边形函数
(四)、 圆、弧和曲线函数
68. getaspectratio()获取纵横比函数
69. circle()画圆函数
70. arc() 画圆弧函数
71. ellipse()画椭圆弧函数
72. fillellipse() 画椭圆区函数
73. pieslice() 画扇区函数
74. sector() 画椭圆扇区函数
75. getarccoords()获取圆弧坐标函数
(五)、 填充函数
76. setfillstyle() 设置填充图样和颜色函数
77. setfillpattern() 设置用户图样函数
78. floodfill() 填充闭域函数
79. fillpoly() 填充多边形函数
80. getfillsettings() 获取填充设置函数
81. getfillpattern() 获取用户图样设置函数
(六)、图像函数
82. imagesize() 图像存储大小函数
83. getimage() 保存图像函数
84. putimage() 输出图像函数
四、图形和图像函数
对许多图形应用程序,直线和曲线是非常有用的。但对有些图形只能靠操作单个像素才能画出。当然如果没有画像素的功能,就无法操作直线和曲线的函数。而且通过大规模使用像素功能,整个图形就可以保存、写、擦除和与屏幕上的原有图形进行叠加。
(一) 像素函数
56. putpixel() 画像素点函数
功能: 函数putpixel() 在图形模式下屏幕上画一个像素点。
用法: 函数调用方式为void putpixel(int x,int y,int color);
说明: 参数x,y为像素点的坐标,color是该像素点的颜色,它可以是颜色符号名,也可以是整型色彩值。
此函数相应的头文件是graphics.h
返回值: 无
例: 在屏幕上(6,8)处画一个红色像素点:
putpixel(6,8,RED);
57. getpixel()返回像素色函数
功能: 函数getpixel()返回像素点颜色值。
用法: 该函数调用方式为int getpixel(int x,int y);
说明: 参数x,y为像素点坐标。
函数的返回值可以不反映实际彩色值,这取决于调色板的设置情况(参见setpalette()函数)。
这个函数相应的头文件为graphics.h
返回值: 返回一个像素点色彩值。
例: 把屏幕上(8,6)点的像素颜色值赋给变量color。
color=getpixel(8,6);
(二) 直线和线型函数
有三个画直线的函数,即line(),lineto(),linerel()。这些直线使用整型坐标,并相对于当前图形视口,但不一定受视口限制,如果视口裁剪标志clip为真,那么直线将受到视口边缘截断;如果clip为假,即使终点坐标或新的当前位置在图形视口或屏幕极限之外,直线截断到屏幕极限。
有两种线宽及几种线型可供选择,也可以自己定义线图样。下面分别介绍直线和线型函数。
58. line() 画线函数
功能: 函数line()使用当前绘图色、线型及线宽,在给定的两点间画一直线。
用法: 该函数调用方式为void line(int startx,int starty,int endx,int endy);
说明: 参数startx,starty为起点坐标,endx,endy为终点坐标,函数调用前后,图形状态下屏幕光标(一般不可见)当前位置不改变。
此函数相应的头文件为graphics.h
返回值: 无
例: 见函数60.linerel()中的实例。
59. lineto() 画线函数
功能: 函数lineto()使用当前绘图色、线型及线宽,从当前位置画一直线到指定位置。
用法: 此函数调用方式为void lineto(int x,int y);
说明: 参数x,y为指定点的坐标,函数调用后,当前位置改变到指定点(x,y)。
该函数对应的头文件为graphics.h
返回值: 无
例: 见函数60.linerel()中的实例。
60.linerel() 相对画线函数
功能: 函数linerel() 使用当前绘图色、线型及线宽,从当前位置开始,按指定的水平和垂直偏移距离画一直线。
用法: 这个函数调用方式为void linerel(int dx,int dy);
说明: 参数dx,dy分别是水平偏移距离和垂直偏移距离。
函数调用后,当前位置变为增加偏移距离后的位置,例如,原来的位置是(8,6),调用函数linerel(10,18)后,当前位置为(18,24)。
返回值:无
例: 下面的程序为画线函数调用实例:
#i ncludegraphics.h
void main()
{
int driver,mode;
driver=DETECT;
mode=0;
initgraph(driver,mode,"");
setcolor(15);
line(66,66,88,88);
lineto(100,100);
linerel(36,64);
getch();
restorecrtmode();
}
61. setlinestyle() 设置线型函数
功能: setlinestyle() 为画线函数设置当前线型,包括线型、线图样和线宽。
用法: setlinestyle() 函数调用方式为void setlinestyle(int stly,unsigned pattern,int width);
说明: 参数style为线型取值,也可以用相应名称表示,如表1-10中所示。
参数pattern用于自定义线图样,它是16位(bit)字,只有当style=USERBIT_LINE(值为1)时,pattern的值才有意义,使用用户自定义线图样,与图样中“1”位对应的像素显示,因此,pattern=0xFFFF,则画实线;pattern=0x9999,则画每隔两个像素交替显示的虚线,如果要画长虚线,那么pattern的值可为0xFF00和0xF00F,当style不为USERBIT_LINE值时,虽然pattern的值不起作用,但扔须为它提供一个值,一般取为0。
参数wigth用来设定线宽,其取值见表1-11,表中给出了两个值,即1和3,实际上,线宽取值为2也是可以接受的。
若用非法参数调用setlinestyle()函数,那么graphresult()会返回错误代码,并且当前线型继续有效。
Turbo C提供的线型与线宽定义在头文件graphics.h中,表1-10和1-11分别列出了参数的取值与含义。
表1-10 线型
-----------------------------------------------------
名 称 取 值 含 义
-----------------------------------------------------
SOLID_LINE 0 实线
DOTTED_LINE 1 点线
CNTER_LINE 2 中心线
DASHED_LINE 3 虚线
USERBIT_LINE 4 用户自定义线型
-----------------------------------------------------
表1-11 线宽
-----------------------------------------------------------
名 称 取 值 说 明
-----------------------------------------------------------
NORM_WIDTH(常宽) 1 一个像素宽(缺省值)
THICK_WIDTH(加宽) 3 三个像素宽
-----------------------------------------------------------
这个函数的头文件是graphics.h
返回值: 无
例: 下面的程序显示了BC中所提供的线型图样:
#i ncludegraphics.h
void main()
{
int driver,mode;
driver=DETECT;
mode=0;
initgraph(driver,mode,"");
for(i=0;i4;i++)
{
setlinestyle(i,0,1);
line(i*50,200,i*50+60,200)
}
getch();
restorecrtmode();
}
62. getlinesettings() 获取线型设置函数
功能: 函数getlinesettings() 用当前设置的线型、线图样和线宽填 写linesettingstype型结构。
用法: 函数调用方式为void getlinesettings(struct linesettingstype *info);
说明: 此函数调用执行后,当前的线型、线图样和线宽值被装入info指向的结构里,从而可从该结构中获得线型设置。
linesettingstype型结构定义如下:
struct linesettingstype {
int linestyle;
unsigned upattern;
int thickness;
};
其中linestyle用于存放线型,线型值为表1-10中的各值之一。
upattern用为装入用户自定义线图样,这是16位字,每一位等于一个像素,如果哪个位被设置,那么该像素打开,否则关闭。
thickness为线宽值存放的变量,可参见表1-11。
getlinesettings()函数对应的头文件为graphics.h
返回值: 返回的线型设置存放在info指向的结构中。
例: 把当前线型的设置写入info结构:
struct linesettingstype info;
getlinesettings(info);
63.setwritemode() 设置画线模式函数
功能: 函数setwritemode() 设置画线模式
用法: 函数调用方式为 void setwritemode()(int mode);
说明: 参数mode只有两个取值0和1,若mode为0,则新画的线将复盖屏幕上原有的图形,此为缺省画线输出模式。如果mode为1,那么新画的像素点与原有图形的像素点先进行异或(XOR)运算,然后输出到屏幕上,使用这种画线输出模式,第二次画同一图形时,将擦除该图形。调用setwritemode()设置的画线输出模式只影响函数line(),lineto(),linerel(),recangle()和drawpoly()。
setwritemode()函数对应的头文件是graphics.h
返回值: 无
例: 设置画线输出模式为0:
setwritemode(0);
(三)、多边形函数
对多边形,无疑可用画直线函数来画出它,但直接提供画多边形的函数会给用户很大方便。最常见的多边形有矩形、矩形块(或称条形)、多边形和多边形块,我们还把长方形条块也放到这里一起考虑,虽然它不是多边形,但它的特例就是矩形(块)。下面直接介绍画多边形的函数。
64. rectangle() 画矩形函数
功能: 函数rectangle() 用当前绘图色、线型及线宽,画一个给定左上角与右下角的矩形(正方形或长方形)。
用法: 此函数调用方式为void rectangle(int left,int top,int right,int bottom);
说明: 参数left,top是左上角点坐标,right,bottom是右下角点坐标。如果有一个以上角点不在当前图形视口内,且裁剪标志clip设置的是真(1),那么调用该函数后,只有在图形视口内的矩形部分才被画出。
这个函数对应的头文件为graphics.h
返回值: 无
例: 下面的程序画一些矩形实例:
#i ncludegraphics.h
void main()
{
int driver,mode;
driver=DETECT;
mode=0;
initgrpah(driver,mode,"");
rectangle(80,80,220,200);
rectangle(140,99,180,300);
rectangle(6,6,88,88);
rectangle(168,72,260,360);
getch();
restorecrtmode();
}
65. bar() 画条函数
功能: 函数bar()用当前填充图样和填充色(注意不是给图色)画出一个指定上左上角与右下角的实心长条形(长方块或正方块),但没有四条边线)。
用法: bar()函数调用方式为void bar(int left,int top,int right,int bottom);
说明: 参数left,topright,bottom分别为左上角坐标与右下角坐标,它们和调用函数rectangle()的情形相同,调用此函数前,可用setfillstyle()或setfillpattern()设置当前填充图样和填充色。
注意此函数只画没有边线的条形,如果要画有边线的的条形,可调用下面的函数bar3d()来画,并将深度参数设为0,同时topflag参数要设置为真,否则该条形无顶边线。
这 应的头文件为graphics.h
返回值: 无
例: 见函数bar3d()中的实例。
66.bar3d() 画条块函数
功能: 函数bar3d() 使用当前绘图色、线型及线宽画出三维长方形条块,并用当前填充图样和填 充色填充该三维条块的表面。
用法: 此函数调用方式为void bar3d(int left,int top,int right,int bottom,int depth,int topflag);
说明: 参数left,top,right,bottom分另为左上角与右下角坐标,这与bar()函数中的一样。参数depth为条块的深度,以像素为单位,通常按宽度的四分之一计算。深度方向通过屏显纵横比调节为约45度(即这时x/y比设置为1:1)。
参数topflag相当于一个布尔参数,如果设置为1(真)那么条块上放一顶面;若设置为0(假),则三维条形就没有顶面,这样可使多个三维条形叠加在一起。
要使图形更加美观,可利用函数floodfill()或setfillpattern()来选择填充图样和填充色(参见本小节(五)填充函数 )。
bar3d()函数对应的头文件为graphics.h
返回值: 无
例: 下面的程序画一个条形和条块:
#i ncludegraphics.h
void main()
{
int driver,mode;
driver=DETECT;
mode=0;
initgraph(driver,mode,"");
setfillstyle(SOLID-FILL,GREEN);
bar(60,80,220,160);
setfillstyle(SOLID-FILL,RED);
bar3d(260,180,360,240,20,1);
getch();
restorecrtmode();
}
67. drawpoly() 画多边形函数
功能: 函数drawpoly() 用当前绘图色、线型及线宽,画一个给定若干点所定义的多边形。
用法: 此函数调用方式为void drawpoly(int pnumber,int *points);
说明: 参数pnumber为多边形的顶点数;参数points指向整型数组,该数组中是多边形所有顶点(x,y)坐标值,即一系列整数对,x坐标值在前。显然整型数组的维数至少为顶点数的2倍,在定义了多边形所有顶点的数组polypoints时,顶点数目可通过计算sizeof(polypoints)除以2倍的sizeof(int)得到,这里除以2倍的原因是每个顶点有两个整数坐标值。另外有一点要注意,画一个n个顶点的闭合图形,顶点数必须等于n+1,并且最后一点(第n+1)点坐标必须等于第一点的坐标。
drawpoly()函数对应的头文件为grpahics.h
返回值: 无
例: 下面的程序画一个封闭星形图与一个不封闭星形图:
#i ncludegraphics.h
void main()
{
int driver,mode;
static int polypoints1[18]={100,100,110,120,100,130,120,125,140,140,130,120,
140,110,120,115,100,100};
static int polypoints2[18]={180,100,210,120,200,130,220,125,240,140,230,120,
240,110,220,115,220,110};
driver=DETECT;
mode=0;
initgraph(driver,mode,"");
drawpoly(9,polypoints1);
drawpoly(9,polypoints2);
getch();
restorecrtmode();
}
(四)、 圆、弧和曲线函数
在一个屏幕上画得很圆的图形到另一个屏幕上可能被压扁或拉长,这是因为每一种显示卡与之相应的显示模式都有一个纵横比。纵横比是指像素的水平方向大小与垂直方向大小的比值。如VGA显示卡由于偈素基本上是正方形,所以纵横比为1.000。
为了保证几何图形基本按预计情况显示在屏幕上,用屏显的纵横比来计算和纠正不同硬件及显示卡产生的畸变。计算纵横比所需要的水平方向和垂直方向的比例系数可调用函数getaspectratio()获得。
68. getaspectratio()获取纵横比函数
功能: 函数getaspectratio()返回x方向和y方向的比例系数,用这两个整型值可计算某一特定屏显的纵横比。
用法: 此函数调用方式为void getaspectratio(int xasp,int yasp);
说明: 参数xasp指向的变量存放返回的x方向比例系数;参数yasp指向的变量存放返回的y方向比例系数。通常y方向比例系数为10 000, x方向比例系数不大于10 000(这是因为大多数屏幕像素高比宽长)。
注意纵横比自动用作下面函数arc(),circle()和pieslice()中的标尺因子,使屏幕上圆或弧正常显示。但用ellipse()函数画椭圆必须调用本函数获取纵横比作为标尺因子,否则不予调整。纵横比可用于其它几何图形,目的是校正和显示图形。
getaspectratio()函数对应的头文件为graphics.h
返回值: 返回x与y方向比例系数分别存放在xasp和yasp所指向的变量中。
例: 下面的程序显示纵横比:
int xasp,yasp;
float aspectratio;
getaspectratio(xasp,yasp);
aspectratio=xasp/yasp;
printf("aspect ratio: %f",aspectratio);
69. circle()画圆函数
功能: 函数circle()使用当前绘图色并以实线画一个完整的圆。
用法:该函数调用方式为void circle(int x,int y,int radius);
说明: 参数x,y为圆心坐标,radius为圆半径,用像素个素表示。注意,调用circle()函数画圆时不用当前线型。
不同于ellipse()函数,只用单个半径radius参数调用circle()函数,故屏显纵横比可以自动调节,以产生正确的显示图。
此函数对应的头文件为graphics.h
返回值: 无
例: 画六个同心圆,圆心在(100,100)。
#i ncludegraphics.h
void main()
{
int driver,mode;
driver=DETECT;
mode=0;
initgraph(driver,mode,"");
circle(100,100,10);
circle(100,100,20);
circle(100,100,30);
circle(100,100,40);
circle(100,100,50);
circle(100,100,60);
getch();
restorecrtmode();
}
70. arc() 画圆弧函数
功能: 函数arc()使用当前绘图色并以实线画一圆弧。
用法: 函数调用方式为void arc(int x,int y,int startangle,int endangle,int radius);
说明: 参数x,y为圆心坐标,startangle与endangle分别为起始角与终止角,radius为半径。圆心坐标和半径以像素个数给出,起始角和终止角以度为单位,0度位于右边,90度位于顶部,180度位于左边,底部是270度。同往常一样,360度与0度重合。角度按逆时针方向增加,但并不要求终止角一定比起始角大。例如指定300度和90度分别为起始角和终止角,与指定300度和450度分别为起始角和终止角可画出相同的弧。大于360度可作为参数,它将被化到0度 ̄360度范围里。函数arc()能画封闭圆,只要取起始角为0度,终止角为360度即可。此函数中,屏显纵横比可自动调节。
arc()函数对应的头文件为graphics.h
返回值: 无
例: 以(200,200)为圆心,100为半径,从0度到120度画圆弧:
#i ncludegraphics.h
void main()
{
int driver,mode;
driver=DETECT;
mode=0;
initgraph(drivwer,mode,"");
setcolor(WHITE);
arc(200,200,0,120,100);
getch();
restorecrtmode();
}
飞哥与小佛:超时空之谜的剧情简介
《飞哥与小佛》(Phineas and Ferb)是Disney Channel原创剧集,是Disney Channel原创剧集中播出时间最长的剧集。于2007年8月17日开始在美国Disney Channel播出,2008年9月1日开始在美国Disney XD频道播出。
链接:
?pwd=fym2 提取码:fym2
该作品讲述飞哥与小佛的故事。飞哥和他没有血缘关系的弟弟小佛是充满无限想像力和行动能力的最佳拍档,随着暑假的来临,他们已经准备好要大展身手!