LineXY
Re: LineXY
Thanks Wilbert,
i don't use it, because i primarily didn't see any advantage over point and plot.
With assembler this is something different again !
i don't use it, because i primarily didn't see any advantage over point and plot.
With assembler this is something different again !
地球上の平和
Re: LineXY
@mk-soft For now, you are way over my head, but maybe when I know PB better.
I did a test routine I'm for a start are satisfied with:
I did a test routine I'm for a start are satisfied with:
Code: Select all
lenght.w = 1600 ; window size
height.w = 800
scale.w = 200
xpos.w = 500 ; center for unit circle
ypos.w = 500
x.f = 0 ; periferi coordinates for unit circle
y.f = 0
t.f = 0 ; start circle 3 o clock
If OpenWindow(0, 0, 0, lenght, height, "2D-test", #PB_Window_SystemMenu | #PB_Window_Normal)
If CreateImage(0, lenght, height) And StartDrawing(ImageOutput(0))
Box(0, 0, lenght, height, RGB(255, 255, 255))
Repeat
x = Cos(t) * scale
y = Sin(t) * scale
y *-1 ; move normal anti clockwise for unit circle
x + xpos
y + ypos
LineXY(500, 500, x, y, $FF0000)
;Plot(x, y, RGB (0, 0, 255))
t + 0.0314 ; jump 1/100 PI RADIAN
;Debug Str(Int(xpos+x)) + "," + Str(Int(ypos+y))
Until t >= #PI ; half unit circle = 1 PI RADIAN
StopDrawing()
ImageGadget(0, 0, 0, 200, 200, ImageID(0))
EndIf
Repeat
Event = WaitWindowEvent()
Until Event = #PB_Event_CloseWindow
EndIf
Re: LineXY
The line:
LineXY(500, 500, x, y, $FF0000)
should of course have been:
LineXY(xpos, ypos, x, y, $FF0000)
LineXY(500, 500, x, y, $FF0000)
should of course have been:
LineXY(xpos, ypos, x, y, $FF0000)
Re: LineXY
hello
Little description
best regard
Little description
Code: Select all
x.l = 100
y.l = 100
x1.l = 400
y1.l = 400
If OpenWindow(0, 0, 0, 600, 600, "Description Function Drawing line", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
CanvasGadget(0, 0, 0,600, 600)
StartDrawing(CanvasOutput(0))
DrawingMode(#PB_2DDrawing_Outlined)
Box(x, y, x1, y1,#Black)
Line(x, y, x1, y1,#Red)
; Analysis Function Drawing Line in PureBasic
; angle projection line = atn( x1 / y1 ) = 45 deg
; long projection line = square( x1 ^ 2 + y1 ^ 2 ) = 565.685425
; example diameter hypothenus square to 45 degree
Circle(x1 - 100, y1 - 100, 565 / 2, #Blue)
StopDrawing()
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
Re: LineXY
Example with Macros ...
At time need alway color parameter.
At time need alway color parameter.
Code: Select all
;-TOP
DeclareModule Flip2d
Global _OffsetY_.i
Macro _PB_(_Function_)
_Function_
EndMacro
Macro SetOffset(_Value_)
_OffsetY_ = _Value_
EndMacro
Macro Line(x, y, Width, Height, Color)
_PB_(Line)(x, _OffsetY_ - (y), Width, (Height) * -1, Color)
EndMacro
Macro Box(x, y, Width, Height, Color)
_PB_(Box)(x, _OffsetY_ - (y), Width, (Height) * -1, Color)
EndMacro
Macro Circle(x, y, Radius, Color)
_PB_(Cirle)(x, _OffsetY_ - (y), Radius, Color)
EndMacro
EndDeclareModule
Module Flip2d
EndModule
If OpenWindow(0, 0, 0, 200, 200, "2DDrawing Example", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
If CreateImage(0, 200, 200) And StartDrawing(ImageOutput(0))
Box(0, 0, 200, 200, RGB(255, 255, 255))
Box(160, 20, 20, 20, RGB(255, 0, 0))
UseModule Flip2d
SetOffset(200)
Box(160, 20, 20, 20, RGB(0, 255, 0))
For Width = 1 To 180 Step 5
Line(10, 10, Width, 180, RGB(Random(255), Random(255), Random(255)))
Next Width
StopDrawing()
ImageGadget(0, 0, 0, 200, 200, ImageID(0))
EndIf
Repeat
Event = WaitWindowEvent()
Until Event = #PB_Event_CloseWindow
EndIf
My Projects ThreadToGUI / OOP-BaseClass / EventDesigner V3
PB v3.30 / v5.75 - OS Mac Mini OSX 10.xx - VM Window Pro / Linux Ubuntu
Downloads on my Webspace / OneDrive
PB v3.30 / v5.75 - OS Mac Mini OSX 10.xx - VM Window Pro / Linux Ubuntu
Downloads on my Webspace / OneDrive
Re: LineXY
I'm currently writing a program that needs a lot of collision detection and scrolling.
I converted some of my code from BBC BASIC to Pure Basic with ease, but the upside-down for y-values adds another layer of difficulties that makes it extra hard and is a hurdle for me.
I really, really like PB but for now I have to be productive again because of a deadline.
Cheers.
I converted some of my code from BBC BASIC to Pure Basic with ease, but the upside-down for y-values adds another layer of difficulties that makes it extra hard and is a hurdle for me.
I really, really like PB but for now I have to be productive again because of a deadline.
Cheers.
Re: LineXY
("normal" Cartesian coordinate system that most people learn at school. Hoewever, mathematicians also work with various...)Little John wrote:OK. But it works that way in many classic BASIC flavours, IIRC e.g. in GW-BASIC, QBASIC, QuickBASIC, Turbo BASIC, PowerBASIC, ...Ivan wrote:@Little John
"(this is the classic behaviour of the BASIC programming language)." - not the BBC Basic I was used to in the eighties.
This is true for the "normal" Cartesian coordinate system that most people learn at school. Hoewever, mathematicians also work with various other coordinate systems, and everyone is free to define her/his own coordinate system. The creators of many classic BASIC flavours took the freedom to define it the way that incrementing y-values go down from the top.Ivan wrote:That very little I know about a coordinate system and math: Incrementing y-values goes up - not down.
With my little knowledge in matematics and geometry I assumed that most programmers are not matemathecians allthough we use matematics to some extend and could use the knowledge we already have.
-
- Addict
- Posts: 4527
- Joined: Thu Jun 07, 2007 3:25 pm
- Location: Berlin, Germany
Re: LineXY
Ivan wrote:("normal" Cartesian coordinate system that most people learn at school. Hoewever, mathematicians also work with various...)Little John wrote:OK. But it works that way in many classic BASIC flavours, IIRC e.g. in GW-BASIC, QBASIC, QuickBASIC, Turbo BASIC, PowerBASIC, ...Ivan wrote:@Little John
"(this is the classic behaviour of the BASIC programming language)." - not the BBC Basic I was used to in the eighties.
This is true for the "normal" Cartesian coordinate system that most people learn at school. Hoewever, mathematicians also work with various other coordinate systems, and everyone is free to define her/his own coordinate system. The creators of many classic BASIC flavours took the freedom to define it the way that incrementing y-values go down from the top.Ivan wrote:That very little I know about a coordinate system and math: Incrementing y-values goes up - not down.
With my little knowledge in matematics and geometry I assumed that most programmers are not matemathecians allthough we use matematics to some extend and could use the knowledge we already have.
- You don't have to be a mathematician in order to be able to use PureBasic's LineXY() command properly (and I didn't write that).
- When you start using a new programming language, you better should be prepared for learning new stuff.
- Usage of PureBasic's LineXY() command is documented properly, and you've got a lot of additional information in this thread.
Re: LineXY
Little John is right !
It is a strange large thread.
Making simple things mostly complicated.
You have to do it like it says in the manual
It is a strange large thread.
Making simple things mostly complicated.
You have to do it like it says in the manual
地球上の平和
Re: LineXY
Does BBC BASIC invert the Y coords? Didn't know that... interesting...
Proud supporter of PB! * Musician * C64/6502 Freak
Re: LineXY
Of course you have to learn new stuff, if you try another languages - what else.Little John wrote:Ivan wrote:("normal" Cartesian coordinate system that most people learn at school. Hoewever, mathematicians also work with various...)Little John wrote:OK. But it works that way in many classic BASIC flavours, IIRC e.g. in GW-BASIC, QBASIC, QuickBASIC, Turbo BASIC, PowerBASIC, ...Ivan wrote:@Little John
"(this is the classic behaviour of the BASIC programming language)." - not the BBC Basic I was used to in the eighties.
This is true for the "normal" Cartesian coordinate system that most people learn at school. Hoewever, mathematicians also work with various other coordinate systems, and everyone is free to define her/his own coordinate system. The creators of many classic BASIC flavours took the freedom to define it the way that incrementing y-values go down from the top.Ivan wrote:That very little I know about a coordinate system and math: Incrementing y-values goes up - not down.
With my little knowledge in matematics and geometry I assumed that most programmers are not matemathecians allthough we use matematics to some extend and could use the knowledge we already have.So what is the problem now
- You don't have to be a mathematician in order to be able to use PureBasic's LineXY() command properly (and I didn't write that).
- When you start using a new programming language, you better should be prepared for learning new stuff.
- Usage of PureBasic's LineXY() command is documented properly, and you've got a lot of additional information in this thread.
I was apparently not succesfull in explaining that in a x,y coordinat system I know of will y increment, when you go up - that it.
No problem, if you ask me.
Re: LineXY
BBC BASIC does what I have learned about coordinate systems.oreopa wrote:Does BBC BASIC invert the Y coords? Didn't know that... interesting...
For me it's logically when y = 0 then you are on the floor and increasing y-values goes upwards.
And that view goes fine with the origin at 0,0 and move in a quadrant or in an octant 0,0,0
Re: LineXY
Agreed.Saki wrote:Little John is right !
It is a strange large thread.
Making simple things mostly complicated.
You have to do it like it says in the manual
If I won't follow the manual I'll have to invert y myself.
I thought I had explained that.
-
- Addict
- Posts: 4527
- Joined: Thu Jun 07, 2007 3:25 pm
- Location: Berlin, Germany
Re: LineXY
Well, you previously wroteIvan wrote:Of course you have to learn new stuff, if you try another languages - what else.
Hence my respective reply.I assumed that [.. we ..] could use the knowledge we already have.
I still do not understand why in this message you quoted text from me, and what the purpose of that message was ...Ivan wrote:No problem, if you ask me.
However, when there are no problems, that's fine.
Re: LineXY
It's not an issue for me for you to have your own preference I have no comment on that at all...Ivan wrote:BBC BASIC does what I have learned about coordinate systems.oreopa wrote:Does BBC BASIC invert the Y coords? Didn't know that... interesting...
For me it's logically when y = 0 then you are on the floor and increasing y-values goes upwards.
And that view goes fine with the origin at 0,0 and move in a quadrant or in an octant 0,0,0
I should have been clearer. I was simply interested in the way the BBC is handling this internally... it means that bitmap memory is stored left-right/bottom-up? Or that it's just simply a translation in basic interpreter that y=0 is the bottom? Curious... I will look into it...
Proud supporter of PB! * Musician * C64/6502 Freak