Vent lige... Jeg skal sender dig lige noget kode. Du kan ikke sådan lige umidelbart bare kunne indsætte koden i dit program, så du bliver nød til selv at tilføje nogle funktioner og/eller procedure til dit program.
zerohero> I C/C++ bruges Tuborg-pranteserne {} i stedet for \"begin..end\", og \"if(x)\" betyder at din If skal udføres hvis x er sandt hvilket vil sige forskellig fra 0. Hvis x er 1,2,7 eller 13 så vil udtrykket være sandt - hvis x er 0 så er udtrykket ikke sandt.
Jeg skrev for flere år siden \"en bog\" (jeg nåede 150 sider - får jeg mistede interessen/tiden) der beskriver hvordan man som pascal programmør \"skifter\" til C/C++. Hvis det har interesse kan jeg maile den (MS-Word), men så skal jeg lige ha\' din adresse.
Hejsa pellelil... tak - for dit indslag, jeg vil se på det med det samme... i mellemtiden kan du vel forklare mig hvorfor Delphi ikke regner rigtigt... Når jeg bruger sin() og cos() så beregner de altså forkert...
Jeg prøvede dette og samtidig kontrollerede resultatet med en lommeregner... og fik forskellige resultater (når jeg bruger positive tal, så kan man sku aldrig få negative tal med sinus og cosinus - men det kan delphi???)
MÆRKLIGT
procedure TForm1.ScrollBar1Change(Sender: TObject); begin caption := inttostr(scrollbar1.position)+\' \'+floattostr(sin(scrollbar1.position)); end;
Din lommeregner arbejder nok i grader hvorimod Delphi arbejder i Radianer. Når vi taler grader så er en fuld cirkel 360 grader (mon ikke du vidste det <G>). Når du i stedet regner i Radianer så er en fuld cirkel 2 * pi.
For at omregne mellem Grader og Radianer se: RadToDeg og DegToRad.
if FView.y - FPosition.y > 10 then FView.y := FPosition.y + 10;
if FView.y - FPosition.y < -10 then FView.y := FPosition.y - 10;
RotateView(0, -rotateY, 0); end;
procedure TCamera.PositionCamera(positionX, positionY, positionZ, viewX, viewY, viewZ, upVectorX, upVectorY, upVectorZ: Extended); var vPosition, vView, vUpVector : TVector; begin with vPosition do begin x := positionX; y := positionY; z := positionZ; end;
with vView do begin x := viewX; y := viewY; z := viewZ; end;
with vUpVector do begin x := upVectorX; y := upVectorY; z := upVectorZ; end;
Position := vPosition; View := vView; UpVector := vUpVector; end;
procedure TCamera.RotateView(X, Y, Z: Extended); var Vector : TVector; begin vector.x := fView.x - fPosition.x; vector.y := fView.y - fPosition.y; vector.z := fView.z - fPosition.z;
if X <> 0 then begin fView.z := fPosition.z + sin(X)*vector.y + cos(X)*vector.z; fView.y := fPosition.y + cos(X)*vector.y - sin(X)*vector.z; end;
if Y <> 0 then begin fView.z := fPosition.z + sin(Y)*vector.x + cos(Y)*vector.z; fView.x := fPosition.x + cos(Y)*vector.x - sin(Y)*vector.z; end;
if Z <> 0 then begin fView.x := fPosition.x + sin(Z)*vector.y + cos(Z)*vector.x; fView.y := fPosition.y + cos(Z)*vector.y - sin(Z)*vector.x; end; end;
procedure TCamera.SetPosition(const Value: TVector); begin FPosition := Value; end;
procedure TCamera.SetUpVector(const Value: TVector); begin FUpVector := Value; end;
procedure TCamera.SetView(const Value: TVector); begin FView := Value; end;
Jeg ville gerne give alle point - men i dette tilfælde har jeg valgt at give dem alle til BorrisHolt for hans komplette oversættelse...
Tak BorrisHolt :-P
ZeroHero
(Jeg håber I andre kan bære over med mit valg!!!)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.