Re: MP3D Engine Alpha 32
Posted: Sun Oct 20, 2013 2:02 pm
another sequence for the gears to reduce the rotation speed for the right gear. press arrow keys to start the rotation
the problem is when we speed the motor too much it will collapse and damaged. may be there is a threshold inside the engine can be set before the motor damaged. or we can prevent the user from speeding the gears over some limit.
the problem is when we speed the motor too much it will collapse and damaged. may be there is a threshold inside the engine can be set before the motor damaged. or we can prevent the user from speeding the gears over some limit.

Code: Select all
;// Project Title: MP 3D Engine Beispielprogramme
;// Dateiname: MP_GearsTest.pb
;// Erstellt am: 30.8.2013
;// Update am :
;// Author: Michael Paulwitz
;//
;// Info:
;// Gear Test
;// Zahnrad Test
;//
;//
;////////////////////////////////////////////////////////////////
ExamineDesktops()
Global bitplanes.b=DesktopDepth(0),RX.w=DesktopWidth(0),RY.w=DesktopHeight(0),s_bg.i
MP_Graphics3D(RX,RY,0,1);MP_VSync(0)
;MP_Graphics3D (640,480,0,1)
SetWindowTitle(0, "MP3D Physik Gear Demo , press arrows carefully to start the engine")
camera = MP_CreateCamera() ; Kamera erstellen
MP_PositionCamera(camera, 0, 5, -5 )
MP_CameraLookAt(camera,0,0,0)
light= MP_CreateLight(0) ; Es werde Licht
Mesh = MP_CreateRectangle (2,0.03,0.5)
ang.f=10
num = (360/ang) / 2
For i=1 To num
Mesh2 = MP_CreateRectangle (2,0.03,0.5)
angle.f+ang
MP_RotateEntity(Mesh2 , 0 , 0, angle, 1) : MP_ChangeMeshCoord(Mesh2)
MP_AddMesh(Mesh2 , Mesh ) : MP_FreeEntity(Mesh2)
Next
Mesh2 = MP_CopyEntity(Mesh)
Mesh7 = MP_CreateRectangle (0.05,4,0.05) ; axes for the middle gear
MP_RotateEntity(Mesh7 , 90 , 0, 0, 1) : MP_ChangeMeshCoord(Mesh7)
MP_AddMesh(Mesh7 , Mesh2 ) :MP_FreeEntity(Mesh7)
teapot = MP_CreateTeapot()
MP_ResizeMesh(teapot,0.5,0.5,0.5)
MP_PositionEntity (teapot,0,0,-2)
MP_RotateEntity(teapot , -90 , 0, 0, 1) : MP_ChangeMeshCoord(teapot)
MP_AddMesh(teapot , Mesh2 ) :MP_FreeEntity(teapot)
MP_FreeEntity(Mesh)
Mesh = MP_CreateRectangle (0.5,0.03,0.5)
angle = 0: ang=45
num = (360/ang) / 2
For i=1 To num
Mesh3 = MP_CreateRectangle (0.5,0.03,0.5)
angle+ang
MP_RotateEntity(Mesh3 , 0 , 0, angle, 1) : MP_ChangeMeshCoord(Mesh3)
MP_AddMesh(Mesh3 , Mesh ) : MP_FreeEntity(Mesh3)
Next
Mesh3 = MP_CopyEntity(Mesh)
MP_FreeEntity(Mesh)
MP_PositionEntity (Mesh3,-1.2,0,0) ;left gear
MP_PositionEntity (Mesh2,0,0,0) ; middle gear
MP_RotateEntity(Mesh3, 90, 0, 0 )
MP_RotateEntity(Mesh2, 90, 0, 0 )
Mesh4 = MP_CopyEntity(Mesh3)
MP_ResizeMesh(Mesh4,0.5,0.5,0.2)
MP_PositionEntity (Mesh4,0,0,-1)
MP_RotateEntity(Mesh4 , -90 , 0, 0, 1)
MP_ChangeMeshCoord(Mesh4)
MP_AddMesh(Mesh4 , Mesh2 ) : MP_FreeEntity(Mesh4)
Mesh5 = MP_CopyEntity(Mesh2)
MP_PositionEntity (Mesh5,1.2,1.1,0) ; right gear
MP_EntitySetNormals (Mesh3)
MP_MaterialDiffuseColor (Mesh3,255,255,0,0)
MP_MaterialSpecularColor (Mesh3, 255, 255 ,0, 0,5)
MP_EntitySetNormals (Mesh2)
MP_MaterialDiffuseColor (Mesh2,255,255,128,50)
MP_MaterialSpecularColor (Mesh2, 255, 255 ,255, 155,5)
MP_EntitySetNormals (Mesh5)
MP_MaterialDiffuseColor (Mesh5,255,255,255,50)
MP_MaterialSpecularColor (Mesh5, 255, 255 ,255, 155,5)
; repositioning of all meshes
MP_PositionEntity (Mesh3,-1.7,-0.5,0) ; left gear
MP_PositionEntity (Mesh2,-0.5,-0.5,0) ; middle gear
MP_PositionEntity (Mesh5,0.7,0.6,0) ; right gear
MP_PhysicInit()
MP_EntityPhysicBody(Mesh3 , 5, 10)
MP_ConstraintCreateHinge (Mesh3,0,1,0)
MP_EntityPhysicBody(Mesh2, 5, 10)
MP_ConstraintCreateHinge (Mesh2,0,10,0)
MP_EntityPhysicBody(Mesh5 , 5, 10)
MP_ConstraintCreateHinge (Mesh5,0,10,0)
MP_AmbientSetLight (RGB(0,100,200))
While Not MP_KeyDown(#PB_Key_Escape) And Not WindowEvent() = #PB_Event_CloseWindow; Esc abfrage oder Windows Schliessen
If MP_KeyDown(#PB_Key_Up)
omega.f + 0.5
ElseIf MP_KeyDown(#PB_Key_Down)
omega.f - 0.5
EndIf
MP_EntitySetOmega(Mesh3, 0 , omega ,0)
MP_PhysicUpdate()
MP_RenderWorld() ; Erstelle die Welt
MP_Flip () ; Stelle Sie dar
Wend
MP_PhysicEnd()