I get here an simple library, called to draw simple 2d radial circles... with given it an count...
Here is the source code, don't edit them.
Source Code:
Code: Select all
;***************************************************************************************************************************
;* Transer.pbi - Version 1.0 ***********************************************************************************************
;***************************************************************************************************************************
;***************************************************************************************************************************
Global X.i = 0
Global Y.i = 0
Global Between.i = 0
Global Radius.i = 0
Global Rotation.i = 0
Global Wave.i = 0
Global Colour.i = 0
;Transer_Circle(X, Y, Between, Radius, Rotation, Count, Colour)
Procedure Transer_Circle_Defeult(X, Y, Between, Radius, Rotation, Count, Colour)
For I = 1 To Count
Circle(X + (Between * (I * Cos(Radian(Rotation)))),
Y + (Between * (I * Sin(Radian(Rotation)))), Radius, Colour)
Next
EndProcedure
;Transer_Circle_Wave(X, Y, Between, Radius, Rotation, Wave, Limit, Count, Colour)
Procedure Transer_Circle_Wave(X, Y, Between, Radius, Rotation, Wave, Count, Colour)
For I = 1 To Count
Circle(X + (I * (Wave * Cos(Radian(Rotation)))),
Y + (I * (Wave * Sin(Radian(Rotation)))), Radius, Colour)
Next
EndProcedure
;Transer_Circle_Diffrence(X, Y, Between, Radius, Rotation, Diffrence, Count, Colour)
Procedure Transer_Circle_Diffrence(X, Y, Between, Radius, Rotation, Diffrence, Count, Colour)
For I = 1 To Count
Circle(X + (Between * (I * Cos(Radian(Rotation * (I * Diffrence))))),
Y + (Between * (I * Sin(Radian(Rotation * (I * Diffrence))))), Radius, Colour)
Next
EndProcedure
;Transer_Circle_Bow(X, Y, Between, Radius, Rotation, Diffrence, Count, Colour)
Procedure Transer_Circle_Bow(X, Y, Between, Radius, Rotation, Diffrence, Count, Colour)
For I = 0 To Count
Circle(X + (Between * (I * Cos(Radian(Rotation + (I * Diffrence))))),
Y + (Between * (I * Sin(Radian(Rotation + (I * Diffrence))))), Radius, Colour)
Next
EndProcedure
;Transer_Circle_Angle(X, Y, Between, Radius, Rotation, Angle, Count, Colour)
Procedure Transer_Circle_Angle(X, Y, Between, Radius, Rotation, Angle, Count, Colour)
For I = 1 To Count
Circle(X + (Between * Cos(Radian(Rotation + (Angle * I/Count)))),
Y + (Between * Sin(Radian(Rotation + (Angle * I/Count)))), Radius, Colour)
Next
EndProcedure
;***************************************************************************************************************************
Demo Script:
Code: Select all
;******************************************************************************************************
;* Transer Demo 1.0 ************************************************************************************
;******************************************************************************************************
;Import Transer Lib (*.pbi)
XIncludeFile "Transer.pbi"
;Call Rotation Value
Global Rot.i = 0
Global Wave.i = 0
Global Dir.b = 1
;Call Procedure, called Initialize2D
Procedure Initialize2D()
;Initialize Sprite
If InitSprite() = 0
MessageRequester("Fout!", "Kan Sprites niet initializeren!", #PB_MessageRequester_Info)
End
EndIf
;Initializeer Keyboard
If InitKeyboard() = 0
MessageRequester("Fout!", "Kan Keyboard niet Initializeren", #PB_MessageRequester_Info)
End
EndIf
;Open Scherm
If OpenScreen(800, 600, 32, "") = 0
MessageRequester("Fout!", "Kan Scherm niet Openen", #PB_MessageRequester_Info)
End
EndIf
EndProcedure
Initialize2D()
Wave * Dir
Repeat
;Draw Radian Circles
ClearScreen(0)
StartDrawing(ScreenOutput())
Transer_Circle_Defeult(200, 200, 10, 5, Rot, 10, RGB(255, 0, 0))
Transer_Circle_Diffrence(200, 400, 10, 5, Rot, 1, 10, RGB(0, 255, 0))
Transer_Circle_Bow(300, 300, 10, 5, Rot, 20, 10, RGB(255, 0, 255))
Transer_Circle_Wave(500, 300, 10, 5, Rot, Wave, 10, RGB(255, 255, 0))
Transer_Circle_Angle(600, 400, 100, 5, Rot, 360, 32, RGB(0, 0, 255))
StopDrawing()
FlipBuffers()
;Set Rotation to + 1
Rot + 1
Wave + (Dir * 1)
If Wave <= 0 Or Wave >= 32
Dir = -Dir
EndIf
;Exit the demo
ExamineKeyboard()
If KeyboardPushed(#PB_Key_Escape)
End
EndIf
ForEver
;********************************************************************************************************
Features:
1) Draw Circles on right in an line with rotate it
2) Draw Circles on right in an line with rotate it given it an diffrence value per/circle
3) Draw Circles in an given degrees with rotate it
4) Draw Circles in an wave transformation
5) Draw Circles in an bow
Planned Features 1.1:
1) Draw more Shapes
2) Inner Rotation
Fixed Bugs:
1) StartDrawing..., StopDrawing called in each function...., now you must do call they functions self
This source code is writted by Jamie van Cadsand... you can copy it and paste this in PureBasic...
Version Requered: 5.62..., Jamie