Hello Charles again :)
My Idea was to create a simple coordinate system with openGl (consoleG) started this example few days ago but the marks are too Long and perhaps you have an Idea to Set for Marks some values thx, Frank
oxygen
' -- opgl test with axis and sin cos curves
' -- oxygen by frank bruebach, 15-04-2024
'
$ FileName "t.exe"
$ title "Triangle and Axis with sin cos curves"
int width=800
int height=600
uses OpenglSceneFrame
function KeyState(int k) as int
===============================
return GetAsyncKeyState(k) and 0x8000 'key down
end function
sub Initialize(sys hWnd)
'=======================
end sub
'
'--------------------------------------------- //
sub Scene(sys hWnd)
'angle = radians(i) ' what is radians(i) it's rad(i) ?
static single ang1, angi1 = 1
dim i as integer
dim x, y, angle as single
dim radius as single = 2.0
'dim radius as single = 100.0 ' Larger radius for better curve visibility
glClearColor 0.3, 0.3, 0.5, 0
glClear GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT
glLoadIdentity
gltranslatef 0.0, 0.0, -10.0 '-4.0
glrotatef ang1, 0.0, 0.0, 1.0
glBegin GL_TRIANGLES
glColor3f 1.0, 0.0, 0.0 : glVertex3f 0.0, 1.0, 0.0
glColor3f 0.0, 1.0, 0.0 : glVertex3f -1.0, -1.0, 0.0
glColor3f 0.0, 0.0, 1.0 : glVertex3f 1.0, -1.0, 0.0
glEnd
' Draw axis
glBegin GL_LINES
glLineWidth 2.0
gltranslatef 0,0,-6 '-1
glscalef 0.01,0.01,0.01
glColor4ub 250,50,0,0 ' X axis color
glVertex2i -500,0
glVertex2i 500,0
glColor4ub 0,0,255,0 ' Y axis color
glVertex2i 0,500
glVertex2i 0,-500
glEnd
glBegin GL_LINES
gltranslatef 0,0,-6
glscalef 0.5,0.5,0.5
glColor4ub 0,255,255,0
' -- some Marks on axes ---------- //
for i = -5 to 5 step 1.025
glVertex2i i, -0.5001 ' too long and wide the marks (length)
glVertex2i i, 0.5001 ' values below 0.5 aren't working
glVertex2i -0.5001, i ' too long and wide the marks (length)
glVertex2i 0.5001, i ' values below 0.5 aren't working
next
glEnd
' Draw rounded, smooth sine and cosine curves
'int pi = 3.1415926536
glLineWidth 2.0
glColor4ub 255, 200, 0, 0
glBegin GL_LINE_STRIP
for i = -360 to 360
angle = i * 3.1415926536 / 180 ' Correct conversion from degrees to radians
glVertex2f i / 360.0 * 2.0 * 3.1415926536, sin(angle)
next
glEnd
glBegin GL_LINE_STRIP
glColor4ub 0, 255, 200, 0
for i = -360 to 360 'step 5
angle = i * 3.1415926536 / 180 ' Convert degrees to radians
glVertex2f i / 360.0 * 2.0 * 3.1415926536, cos(angle)
next
glEnd
'
'UPDATE ROTATION ANGLES
'----------------------
'
'ang1+=angi1
'if ang1>360 then ang1-=360
'
end sub
sub Release(sys hwnd)
'====================
end sub
This example is fairly close:
You can move / rotate the graph by dragging the origin (TouchZone)
.\demos\OpenGl\DataGraphs\XYZBarLinePlot.o2bas
% Title "Graph"
'% Animated
% ScaleUp
'% PlaceCentral
'% AnchorCentral
uses glo2\GraphUtil
sub main
========
static sys imgn,res,wi,ht
cls
pushstate 'FOR GRAPH
'
static MoveableObject gr
if not gr.id
gr.mode=0x111
gr.snap=.1
gr.set 100, 0, 5, -16, 0
end if
gr.act
TouchZone
'color 0,.8,.8,1
linescale 20.0, 1.0, .3, 5 'X AXIS
glRotatef 90,0,1,0
linescale 20.0, 1.0, .3, 5 'Z AXIS
glRotatef -90,0,1,0
glRotatef 90,0,0,1
linescale 10.0, 1.0, -.3, 5 'Y AXIS
glRotatef -90,0,0,1
'
'GRIDS
thickness 1
color 0,.4,.4,1.
glRotatef -90,1,0,0
grid 1,20,20 'FLOOR GRID
glRotatef 90,1,0,0
'
glRotatef 90,0,1,0
grid 1,20,10 'SIDE GRID
glRotatef -90,0,1,0
'
'X AXIS VALUES
color .5,1
pushstate
move 0,-1.5
numscale 0,0,10,0, 0,10,2,1, 3 'X NUMBERS
glRotatef 90,0,1,0
numscale 0,0,10,0, 0,10,2,1, 3 'Z NUMBERS
glRotatef -90,0,1,0
'
popstate
'Y AXIS VALUES
color .99,.50
pushstate
move -3
numscale 0,0,0,5, 0,500,3,0, 3 'Y NUMBERS
popstate
'PLOTS
float d={ 0,1,-0, 5,2,-5, 10,5,-10, 20,9,-15 }
sys n=countof(d)/3
'
pushstate
shading
'color 1.,.3,.0 : VertBarPlot3d n,d, .5
color 1.,.3,.0 : VertRodPlot3d n,d, .5
move 6,8,-10
'go cube
'color 1.,.7,.0 : go sphere
flat
popstate
'
thickness 2 : color 1.,1.,.0 : LinePlot3d n,d
'thickness 3 : color .0,.5,.0 : VertLinePlot n,d
'thickness 3 : color .0,.5,.0 : HorzLinePlot n,d
move 0,0,.01
PointSize 12 : color 0,0,.5,1 : PointPlot3d n,d
move 0,0,-.01
'color .7,.5,.0 : VertBarPlot n,d, 1.0
'color .7,.5,.0 : HorzBarPlot n,d, 1.0
'
popstate 'END OF GRAPH
'
pushstate
static MoveableObject title
if not title.id
title.mode=0x111
title.snap=.1
title.set 200, 0, 2, -3, 0
end if
title.act
TouchZone .5
scale 2
printl "3D Graphs"
popstate
end sub 'main
EndScript
Thank you Charles didnt know yet this example very good to study :)