Jump to content

Draw a sphere: Difference between revisions

no edit summary
(→‎{{header|Perl 6}}: Add an alternate using a graphics library)
No edit summary
Line 2,584:
eeeeeeeeeeeee
</pre>
=={{header|M2000 Interpreter}}==
<lang M2000 Interpreter>
Module CheckIt {
Er$="Pset is a new statement"
If Version<9.4 Then Error Er$
If Version=9.4 then If revision<26 then Error Er$
Form 60, 40
Cls 0 ' Black
Gradient 0,1
Pen 14 ' Yellow
Set Fast !
Refresh 500
Module Sphere (R as long, X0 as long, Y0 as long, fun){
R2 = R * R
Def Long X, Y, D2
Let Scale=twipsx/R*13.5
For Y = -R To R step twipsx {
Move X0-R, Y+Y0
For X = -R To R step twipsy {
D2 = X **2 + Y **2
IF R2>D2 THEN Pset Fun(Max.Data(Min.Data((Sqrt(R2 - D2) - ( X + Y) / 2 )*Scale ,255),0))
Step twipsx
}
}
}
Blue=lambda (c)->{
c1=c/4+192
=Color(c,c,c1)
}
Blue1=lambda (c)->{
c1=c/4+Random(150,192)
=Color(c,c,c1)
}
Mystery=lambda m=1 (c)->{
c1=c/4+m
m+=10
if m>192 then m=1
=Color(c,c,c1)
}
Mystery2=lambda m=1, p=true (c)->{
c1=c/4+m
if p then m+=10
Else m=-10
if m>192 then m-=10 : p=false
If m<0 then m+=10: p=true
=Color(c,c,c1)
}
Buffer Alfa as byte*8
Trans =lambda Alfa (c) -> {
Return Alfa, 0:=-point as long
Return Alfa, 4:=-color(c,c, c/4+192) as long
for i=0 to 2: Return Alfa, i:=(Eval(Alfa, i)+Eval(Alfa, i+4))/2: Next i
=-Eval(Alfa, 0 as long)
}
Sphere 2400, 9000,7000, Blue
Sphere 800, 6000, 7000, Blue1
Sphere 1200, 5000,5000, Mystery
Sphere 1200, 10000,6000, Mystery2
Sphere 1200, 8000,5000, trans
}
Checkit
</lang>
=={{header|Maple}}==
[[File:Sphere_Maple.png|thumb]]
Anonymous user
Cookies help us deliver our services. By using our services, you agree to our use of cookies.