Возможно следующий пример будет полезен тем, кому приходится менять систему координат.
Вам нужно нарисовать область и клавишу команды, чтобы пример работал.
Вы можете менять значения: xmin, xmax, ymin и ymax, - чтобы они соответствовали вашим пожеланиям.
Пример 1 системы координат
PUBLIC SUB Button1_Click()
DIM dymax AS Integer
' maximal value of y = Height, which is drawn
DIM dymin AS Integer
' minimal value of y, which is drawn ( = 0 )
DIM ymax AS Integer
DIM ymin AS Integer
DIM y AS Float
DIM dy AS Float
DIM dyi AS Integer
DIM dxmax AS Integer
' maximal value of x = Width, which is drawn
DIM dxmin AS Integer
' minimal value of x, which is drawn ( mostly dxmin = 0 )
DIM xmax AS Integer
DIM xmin AS Integer
DIM x AS Float
DIM dx AS Float
DIM dxi AS Integer
dymax = DrawingArea1.Height
dymin = 0
ymax = 4
ymin = -1
dxmax = DrawingArea1.Width
dxmin = 0
xmax = 12
xmin = -1
'x-Axis is drawn
FOR x = xmin TO xmax STEP 0.005
y = 0
' Formula
'Relation of a length / maximallength is equal in both systems
'(dy - dymin) / (dymax - dymin) = (y - ymin) / (ymax - ymin )
'dy - dymin = (y - ymin) / (ymax - ymin ) * (dymax - dymin)
dy = CFloat(y - ymin) / (ymax - ymin ) * (dymax - dymin) + dymin
' Formula for x
'(dx - dxmin) / (dxmax - dxmin) = (x - xmin) / (xmax - xmin )
'dx - dxmin = (x - xmin) / (xmax - xmin ) * (dxmax - dxmin)
dx = CFloat(x - xmin) / (xmax - xmin ) * (dxmax - dxmin) + dxmin
'PRINT x,y,dx,dy
dyi = Fix(dy)
dxi = Fix(dx)
Draw.Begin(DrawingArea1)
Draw.Point(dxi,DrawingArea1.Height- dyi)
Draw.End
NEXT
'y - Axis is drawn
FOR y = ymin TO ymax STEP 0.005
x = 0
dy = CFloat(y - ymin) / (ymax - ymin ) * (dymax - dymin) + dymin
dx = CFloat(x - xmin) / (xmax - xmin ) * (dxmax - dxmin) + dxmin
'PRINT x,y,dx,dy
dyi = Fix(dy)
dxi = Fix(dx)
Draw.Begin(DrawingArea1)
Draw.Point(dxi,DrawingArea1.Height- dyi)
Draw.End
NEXT
END
Пример 2 y = 1 / x
Возьмите код из примера 1. Возьмите другую клавишу команды (Command button) и добавьте следующий код для нее. Будьте внимательны, поскольку когда x = 0, тогда 1 / x не будет работать.
PUBLIC SUB Button2_Click()
DIM dymax AS Integer
DIM dymin AS Integer
DIM ymax AS Integer
DIM ymin AS Integer
DIM y AS Float
DIM dy AS Float
DIM dyi AS Integer
DIM dxmax AS Integer
DIM dxmin AS Integer
DIM xmax AS Integer
DIM xmin AS Integer
DIM x AS Float
DIM dx AS Float
DIM dxi AS Integer
dymax = DrawingArea1.Height
dymin = 0
ymax = 4
ymin = -1
dxmax = DrawingArea1.Width
dxmin = 0
xmax = 12
xmin = -1
' y = 1/x is drawn
FOR x = 0.01 TO xmax STEP 0.005
y = CFloat(1) / x
dy = CFloat(y - ymin) / (ymax - ymin ) * (dymax - dymin) + dymin
dx = CFloat(x - xmin) / (xmax - xmin ) * (dxmax - dxmin) + dxmin
dyi = Fix(dy)
dxi = Fix(dx)
Draw.Begin(DrawingArea1)
Draw.Point(dxi,DrawingArea1.Height- dyi)
Draw.End
NEXT
END
-- ReinerHoffmann - 18 Jan 2004