Hello All,
Can someone help me how text in the graphics mode can be drawn at a certain angle off the horizontal or vertical
Draw text "Hello World, draw text any direction" at location 450,500 'how can this whole sentence be drawn, say at an angle of 30 degrees to the horizontal or for that matter any angle within 360 degrees
I was thinking
Draw text "Hello World, draw text any direction" at location 450,500 ANGLE 30
Doesn't work
I looked in the manual and forum but couldn't find any thing.
Thank you
Erg
Draw Text in any Angle direction
- Mr. Kibernetik
- Site Admin
- Posts: 4786
- Joined: Mon Nov 19, 2012 10:16 pm
- My devices: iPhone, iPad, MacBook
- Location: Russia
- Flag:
Re: Draw Text in any Angle direction
You can do it in sprite
Code: Select all
sprite 0 begin 100,50
draw text "the text" at 0,0
sprite 0 end
graphics
for x=0 to screen_width() step 100
sprite 0 at x,100 angle x
sprite 0 stamp
next x
Re: Draw Text in any Angle direction
Fantastic
Thank you Mr. Kibernenik
Thank you Mr. Kibernenik
-
- Posts: 814
- Joined: Tue Apr 09, 2013 12:23 pm
- My devices: iPhone,iPad
Windows - Location: Groningen, Netherlands
- Flag:
Re: Draw Text in any Angle direction
option base 1 ! option angle degrees ! randomize
dim tok(40,10,2)
tokens(tok)
graphics ! graphics clear .8,.8,.8 ! fill color .8,.8,.8
graphics lock
for angl=0 to 340 step 22
alph=.3+rnd(.7) ! c=rnd(100) ! siz=3+int(angl/20)
if c<25 then ! col$="z" ! goto lab ! end if
if c<50 then ! col$="r" ! goto lab ! end if
if c<75 then ! col$="b" ! goto lab ! end if
col$="g"
lab:
r=30+angl/15 ! x=r*cos(-angl) ! y=r*sin(-angl)
draw_text("can you read this ?",col$,siz,alph,340+x,400+y,angl,tok)
next angl
graphics unlock
end
def draw_text(txt$,col$,siz,alph,x,y,angl,tok(,,))
set_color(col$)
draw alpha alph ! lt=len(txt$) ! fac=siz/4
ca=cos(-angl) ! sa=sin(-angl) ! draw size 1+int(siz/10)
for i=1 to lt
t$=substr$(txt$,i,i) ! t=asc(t$)
if t>96 then ! k=t-82 ! goto dt_loop1 ! end if
if t>47 and t<58 then ! k=t-44 ! goto dt_loop1 ! end if
if t=32 then k=1 ! if t=44 then k=2
if t=46 then k=3 ! if t=63 then k=14
dt_loop1:
r=siz*(i-1) ! xd=x+r*ca ! yd=y+r*sa
for j=1 to 10
xl=fac*tok(k,j,1) ! yl=fac*tok(k,j,2)
if xl<0 then dt_loop2
xp=xd+xl*ca-yl*sa ! yp=yd+xl*sa+yl*ca
if j=1 then draw to xp,yp else draw line to xp,yp
next j
dt_loop2:
next i
end def
def set_color(col$)
if col$="z" then draw color 0,0,0
if col$="r" then draw color 1,0,0
if col$="g" then draw color 0,.6,0
if col$="b" then draw color 0,0,1
if col$="w" then draw color 1,1,1
end def
def tokens(tok(,,))
for i=1 to 40 ! for j=1 to 10 ! for k=1 to 2
read tok(i,j,k)
next k ! next j ! next i
data -1,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0 '
data 1.5,3, 2,3, 2,3.5, 1,4, 1.5,3.5, 1.5,3, -1,0,0,0,0,0,0,0 ',
data 1,3.5, 1.5,3.5, 1.5,4, 1,4, -1,0,0,0,0,0,0,0,0,0,0,0 '.
data 0,1, 0,3, 1,4, 2,4, 3,3, 3,1, 2,0, 1,0, 0,1, -1,0 '0
data 1,1, 2,0, 2,4, 1,4, 3,4, -1,0, 0,0, 0,0, 0,0, 0,0 '1
data 0,1, 1,0, 2,0, 3,1, 0,4, 3,4, -1,0, 0,0, 0,0, 0,0 '2
data 0,0, 3,0, 2,1, 3,2, 3,3, 2,4, 1,4, 0,3, -1,0, 0,0 '3
data 3,3, 0,3, 2,0, 2,4, 2,3, 3,3, -1,0, 0,0, 0,0, 0,0 '4
data 3,0, 1,0, 0,2, 2,2, 3,3, 2,4, 0,4, -1,0, 0,0, 0,0 '5
data 2,0, 0,2, 0,3, 1,4, 2,4, 3,3, 2,2, 0,2, -1,0, 0,0 '6
data 0,0, 3,0, 0,4, 1.5,2, 1,2, 2,2, -1,0, 0,0, 0,0, 0,0 '7
data 0,2, 0,0, 3,0, 3,2, 0,2, 0,4, 3,4, 3,2, -1,0, 0,0 '8
data 2.3,2, 1,2, 0,1, 1,0, 2,0, 3,1, 1,4, -1,0, 0,0, 0,0 '9
data 0,1, 1.5,0, 3,1, 1,2.5, 1,3.5, .5,4, 1.5,4, 1,3.5, -1,0, 0,0 '?
data 0,4, 1.5,0, 3,4, 2.6,3, 0.4,3, -1,0, 0,0, 0,0, 0,0, 0,0 'a
data 2,2, 0,2, 0,0, 2,0, 3,1, 2,2, 3,3, 2,4, 0,4, 0,2 'b
data 3,1, 2,0, 1,0, 0,1, 0,3, 1,4, 2,4, 3,3, -1,0, 0,0 'c
data 0,0, 0,4, 2,4, 3,3, 3,1, 2,0, 0,0, -1,0, 0,0, 0,0 'd
data 3,0, 0,0, 0,2, 2,2, 0,2, 0,4, 3,4, -1,0, 0,0, 0,0 'e
data 3,0, 0,0, 0,2, 2,2, 0,2, 0,4, -1,0, 0,0, 0,0, 0,0 'f
data 3,1, 2,0, 1,0, 0,1, 0,3, 1,4, 2,4, 3,3, 3,2, 1,2 'g
data 0,0, 0,4, 0,2, 3,2, 3,0, 3,4, -1,0, 0,0, 0,0, 0,0 'h
data 1,0, 3,0, 2,0, 2,4, 3,4, 1,4, -1,0, 0,0, 0,0, 0,0 'i
data 1,0, 3,0, 3,3, 2,4, 1,4, 0,3, -1,0, 0,0, 0,0, 0,0 'j
data 0,0, 0,4, 0,3, 3,0, 1.5,1.5, 3,4, -1,0, 0,0, 0,0, 0,0 'k
data 0,0, 0,4, 3,4, -1,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0 'l
data 0,4, 0,0, 1.5,2, 3,0, 3,4, -1,0, 0,0, 0,0, 0,0, 0,0 'm
data 0,4, 0,0, 3,4, 3,0, -1,0, 0,0, 0,0, 0,0, 0,0, 0,0 'n
data 0,1, 0,3, 1,4, 2,4, 3,3, 3,1, 2,0, 1,0, 0,1, -1,0 'o
data 0,4, 0,0, 2,0, 3,1, 2,2, 0,2, -1,0, 0,0, 0,0, 0,0 'p
data 2,4, 1,4, 0,3, 0,1, 1,0, 2,0, 3,1, 3,3, 2,3, 3,4 'q
data 0,4, 0,0, 2,0, 3,1, 2,2, 0,2, 1,2, 3,4, -1,0, 0,0 'r
data 3,0, 1,0, 0,1, 1,2, 2,2, 3,3, 2,4, 0,4, -1,0, 0,0 's
data 0,0, 3,0, 1.5,0, 1.5,4, -1,0, 0,0, 0,0, 0,0, 0,0, 0,0 't
data 0,0, 0,3, 1,4, 2,4, 3,3, 3,4, 3,0, -1,0, 0,0, 0,0 'u
data 0,0, 1.5,4, 3,0, -1,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0 'v
data 0,0, 0,4, 1.5,2, 3,4, 3,0, -1,0, 0,0, 0,0, 0,0, 0,0 'w
data 0,0, 3,4, 1.5,2, 0,4, 3,0, -1,0, 0,0, 0,0, 0,0, 0,0 'x
data 0,0, 1.5,2, 0,4, 3,0, -1,0, 0,0, 0,0, 0,0, 0,0, 0,0 'y
data 0,0, 3,0, 0,4, 3,4, -1,0, 0,0, 0,0, 0,0, 0,0, 0,0 'z
end def
dim tok(40,10,2)
tokens(tok)
graphics ! graphics clear .8,.8,.8 ! fill color .8,.8,.8
graphics lock
for angl=0 to 340 step 22
alph=.3+rnd(.7) ! c=rnd(100) ! siz=3+int(angl/20)
if c<25 then ! col$="z" ! goto lab ! end if
if c<50 then ! col$="r" ! goto lab ! end if
if c<75 then ! col$="b" ! goto lab ! end if
col$="g"
lab:
r=30+angl/15 ! x=r*cos(-angl) ! y=r*sin(-angl)
draw_text("can you read this ?",col$,siz,alph,340+x,400+y,angl,tok)
next angl
graphics unlock
end
def draw_text(txt$,col$,siz,alph,x,y,angl,tok(,,))
set_color(col$)
draw alpha alph ! lt=len(txt$) ! fac=siz/4
ca=cos(-angl) ! sa=sin(-angl) ! draw size 1+int(siz/10)
for i=1 to lt
t$=substr$(txt$,i,i) ! t=asc(t$)
if t>96 then ! k=t-82 ! goto dt_loop1 ! end if
if t>47 and t<58 then ! k=t-44 ! goto dt_loop1 ! end if
if t=32 then k=1 ! if t=44 then k=2
if t=46 then k=3 ! if t=63 then k=14
dt_loop1:
r=siz*(i-1) ! xd=x+r*ca ! yd=y+r*sa
for j=1 to 10
xl=fac*tok(k,j,1) ! yl=fac*tok(k,j,2)
if xl<0 then dt_loop2
xp=xd+xl*ca-yl*sa ! yp=yd+xl*sa+yl*ca
if j=1 then draw to xp,yp else draw line to xp,yp
next j
dt_loop2:
next i
end def
def set_color(col$)
if col$="z" then draw color 0,0,0
if col$="r" then draw color 1,0,0
if col$="g" then draw color 0,.6,0
if col$="b" then draw color 0,0,1
if col$="w" then draw color 1,1,1
end def
def tokens(tok(,,))
for i=1 to 40 ! for j=1 to 10 ! for k=1 to 2
read tok(i,j,k)
next k ! next j ! next i
data -1,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0 '
data 1.5,3, 2,3, 2,3.5, 1,4, 1.5,3.5, 1.5,3, -1,0,0,0,0,0,0,0 ',
data 1,3.5, 1.5,3.5, 1.5,4, 1,4, -1,0,0,0,0,0,0,0,0,0,0,0 '.
data 0,1, 0,3, 1,4, 2,4, 3,3, 3,1, 2,0, 1,0, 0,1, -1,0 '0
data 1,1, 2,0, 2,4, 1,4, 3,4, -1,0, 0,0, 0,0, 0,0, 0,0 '1
data 0,1, 1,0, 2,0, 3,1, 0,4, 3,4, -1,0, 0,0, 0,0, 0,0 '2
data 0,0, 3,0, 2,1, 3,2, 3,3, 2,4, 1,4, 0,3, -1,0, 0,0 '3
data 3,3, 0,3, 2,0, 2,4, 2,3, 3,3, -1,0, 0,0, 0,0, 0,0 '4
data 3,0, 1,0, 0,2, 2,2, 3,3, 2,4, 0,4, -1,0, 0,0, 0,0 '5
data 2,0, 0,2, 0,3, 1,4, 2,4, 3,3, 2,2, 0,2, -1,0, 0,0 '6
data 0,0, 3,0, 0,4, 1.5,2, 1,2, 2,2, -1,0, 0,0, 0,0, 0,0 '7
data 0,2, 0,0, 3,0, 3,2, 0,2, 0,4, 3,4, 3,2, -1,0, 0,0 '8
data 2.3,2, 1,2, 0,1, 1,0, 2,0, 3,1, 1,4, -1,0, 0,0, 0,0 '9
data 0,1, 1.5,0, 3,1, 1,2.5, 1,3.5, .5,4, 1.5,4, 1,3.5, -1,0, 0,0 '?
data 0,4, 1.5,0, 3,4, 2.6,3, 0.4,3, -1,0, 0,0, 0,0, 0,0, 0,0 'a
data 2,2, 0,2, 0,0, 2,0, 3,1, 2,2, 3,3, 2,4, 0,4, 0,2 'b
data 3,1, 2,0, 1,0, 0,1, 0,3, 1,4, 2,4, 3,3, -1,0, 0,0 'c
data 0,0, 0,4, 2,4, 3,3, 3,1, 2,0, 0,0, -1,0, 0,0, 0,0 'd
data 3,0, 0,0, 0,2, 2,2, 0,2, 0,4, 3,4, -1,0, 0,0, 0,0 'e
data 3,0, 0,0, 0,2, 2,2, 0,2, 0,4, -1,0, 0,0, 0,0, 0,0 'f
data 3,1, 2,0, 1,0, 0,1, 0,3, 1,4, 2,4, 3,3, 3,2, 1,2 'g
data 0,0, 0,4, 0,2, 3,2, 3,0, 3,4, -1,0, 0,0, 0,0, 0,0 'h
data 1,0, 3,0, 2,0, 2,4, 3,4, 1,4, -1,0, 0,0, 0,0, 0,0 'i
data 1,0, 3,0, 3,3, 2,4, 1,4, 0,3, -1,0, 0,0, 0,0, 0,0 'j
data 0,0, 0,4, 0,3, 3,0, 1.5,1.5, 3,4, -1,0, 0,0, 0,0, 0,0 'k
data 0,0, 0,4, 3,4, -1,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0 'l
data 0,4, 0,0, 1.5,2, 3,0, 3,4, -1,0, 0,0, 0,0, 0,0, 0,0 'm
data 0,4, 0,0, 3,4, 3,0, -1,0, 0,0, 0,0, 0,0, 0,0, 0,0 'n
data 0,1, 0,3, 1,4, 2,4, 3,3, 3,1, 2,0, 1,0, 0,1, -1,0 'o
data 0,4, 0,0, 2,0, 3,1, 2,2, 0,2, -1,0, 0,0, 0,0, 0,0 'p
data 2,4, 1,4, 0,3, 0,1, 1,0, 2,0, 3,1, 3,3, 2,3, 3,4 'q
data 0,4, 0,0, 2,0, 3,1, 2,2, 0,2, 1,2, 3,4, -1,0, 0,0 'r
data 3,0, 1,0, 0,1, 1,2, 2,2, 3,3, 2,4, 0,4, -1,0, 0,0 's
data 0,0, 3,0, 1.5,0, 1.5,4, -1,0, 0,0, 0,0, 0,0, 0,0, 0,0 't
data 0,0, 0,3, 1,4, 2,4, 3,3, 3,4, 3,0, -1,0, 0,0, 0,0 'u
data 0,0, 1.5,4, 3,0, -1,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0 'v
data 0,0, 0,4, 1.5,2, 3,4, 3,0, -1,0, 0,0, 0,0, 0,0, 0,0 'w
data 0,0, 3,4, 1.5,2, 0,4, 3,0, -1,0, 0,0, 0,0, 0,0, 0,0 'x
data 0,0, 1.5,2, 0,4, 3,0, -1,0, 0,0, 0,0, 0,0, 0,0, 0,0 'y
data 0,0, 3,0, 0,4, 3,4, -1,0, 0,0, 0,0, 0,0, 0,0, 0,0 'z
end def
- rbytes
- Posts: 1338
- Joined: Sun May 31, 2015 12:11 am
- My devices: iPhone 11 Pro Max
iPad Pro 11
MacBook
Dell Inspiron laptop
CHUWI Plus 10 convertible Windows/Android tablet - Location: Calgary, Canada
- Flag:
- Contact:
Re: Draw Text in any Angle direction
One suggestion for making text point in the desired direction is to use the command OPTION ANGLE DEGREES early in your code. That way you will understand better where your text should point when you set the sprite angle. It will be in the normal horizontal position at 0 degrees, and then can be rotated up to 360 degrees to turn a full circle. At 360 degrees it will point in the same direction as 0 degrees.
Here's a bit of code that builds on Mr. K's example. There are three sprites created, one for each row, to stamp text in a different color.
Here's a bit of code that builds on Mr. K's example. There are three sprites created, one for each row, to stamp text in a different color.
Code: Select all
OPTION ANGLE DEGREES
GRAPHICS
DRAW COLOR 1,0,0
DRAW TEXT "90 degree text" AT 400,190
n=1
SPRITE n BEGIN 100,50
DRAW TEXT "the text" AT 0,0
SPRITE n END
FOR x=20 TO SCREEN_WIDTH()-40 STEP 90
SPRITE n AT x,100 ANGLE x-20
SPRITE n STAMP
NEXT x
DRAW COLOR 0,.9,0
DRAW TEXT "45 degree text" AT 400,390
n+=1
SPRITE n BEGIN 100,50
DRAW TEXT "the text" AT 0,0
SPRITE n END
FOR x=20 TO SCREEN_WIDTH()-40 STEP 90
SPRITE n AT x,300 ANGLE x+25
SPRITE n STAMP
NEXT x
DRAW COLOR .3,.3,1
DRAW TEXT "random degree text" AT 380,590
n+=1
SPRITE n BEGIN 100,50
DRAW TEXT "the text" AT 0,0
SPRITE n END
FOR x=20 TO SCREEN_WIDTH()-40 STEP 90
SPRITE n AT x,500 ANGLE RND(360)
SPRITE n STAMP
NEXT x
- Attachments
-
- IMG_2245.PNG (149.21 KiB) Viewed 1798 times
The only thing that gets me down is gravity...