[Java]Gebruik van Math.sin

Pagina: 1
Acties:
  • 154 views sinds 30-01-2008
  • Reageer

  • Potatoman
  • Registratie: September 2000
  • Laatst online: 23:04
Wat ik probeer te maken: een hijskraan (gewoon een vierkant) met een arm die 90 graden kan draaien:
code:
1
2
3
4
5
6
7
8
A   /
   /
  /
 /
/----------------B
|           |
|           |
\________________/

Zoiets ongeveer.
Nu is het mijn bedoeling om de arm mbv 1 scrollbalk tussen punt a en punt b te verschuiven(terwijl hij dezelfde lengte houdt), en daar heb ik dus de sinus en cosinus voor nodig. Maar in java weet ik alleen maar dat Math.sin een radiale sinus is en die kan ik daarvoor niet gebruiken.

Mijn vraag: weet iemand hoe dit gedaan kan worden met een radiale sinus, of weet iemand hoe ik een 'gewone' sinus (sinus met DEG op je rekenmachine) kan opvragen?

The cyclographing developer


  • im_ik
  • Registratie: November 2000
  • Laatst online: 28-12-2025

im_ik

dat ben ik dus

Atari Terminator AI - LegoBlockX3 = ᒢᐩᐩ.ᒡᒢᑊᒻᒻᓫᔿ.ᣳᣝᐤᣜᣳ.ᐪᓫᣗᔿᑊᣕᣔᐪᐤᣗ.T008ᖟ


Verwijderd

Math.sin(x) * (360/2*PI) ?

  • Potatoman
  • Registratie: September 2000
  • Laatst online: 23:04
Op maandag 22 oktober 2001 12:11 schreef Snow-in-a-can het volgende:
Math.sin(x) * (360/2*PI) ?
Kan je iets precieser zijn? want met die informatie kan ik nog geen X en Y coordinaat berekenen :'(

The cyclographing developer


  • wasigh
  • Registratie: Januari 2001
  • Niet online

wasigh

wasigh.blogspot.com

er zitten methoden Math.toRadians en Math.toDegrees in java (volgens jRobert)

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 22:25

Janoz

Moderator Devschuur®

!litemod

Tjongejonge

Graden 0 - 360
Radialen 0 - 2*Pi

Pi = 3.1415.....


radWaarde=(degWaarde/360)*2*Pi = (degWaarde*Pi)/180

Beetje wiskunde....

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Potatoman
  • Registratie: September 2000
  • Laatst online: 23:04
Op maandag 22 oktober 2001 13:11 schreef Janoz het volgende:
Tjongejonge

Graden 0 - 360
Radialen 0 - 2*Pi

Pi = 3.1415.....


radWaarde=(degWaarde/360)*2*Pi = (degWaarde*Pi)/180

Beetje wiskunde....
Wiskunde is mijn probleem niet, het omzetten in nuttige java code wel...

Oftewel, hoe berekenen ik de x en y coordinaat van het eindpunt van de lijn, bijvoorbeeld bij een lijnlengte van 100, een beginpunt van 300,300 en een hoek van 60 graden?

The cyclographing developer


Verwijderd

als je circel hebt,

en om die cirkel laat je je 2*Pi radians lopen...
code:
1
2
3
4
5
6
7
dan is 0    * Pi = rechts ( 1,  0)
        1/2 * Pi = boven  ( 0,  1)
     1  * Pi = links  (-1,  0)
     1  1/2 * Pi = onder  ( 0, -1)

dus: x coordinaat = Cos(hoek)
     y coordinaat = Sin(hoek)

volgens mij gaat het zo in ieder geval...
(x, y) = (Cos(alpha), Sin(alpha))

de rest laat ik aan jou over.
speel er wat mee

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Potatoman: Oftewel, hoe berekenen ik de x en y coordinaat van het eindpunt van de lijn, bijvoorbeeld bij een lijnlengte van 100, een beginpunt van 300,300 en een hoek van 60 graden?
Dit kan je heel eenvoudig oplossen. Transleer eerst naar 0,0. Die 300, 300 boeit natuurlijk niet. Daarna is het een eenvoudig wiskundig probleem:
code:
1
2
3
4
5
6
7
     /|
    / |
100/  |
  /   | y
 / 60 |
/_____|
   x

Met behulp van enige wiskunde kan je eenvoudig zowel x als y berekenen (dat zou je moeten kunnen). Daarna tel je bij deze x en y 300 en 300 op en klaar :) .

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


Verwijderd

Op maandag 22 oktober 2001 20:52 schreef mbravenboer het volgende:

[..]
Dit kan je heel eenvoudig oplossen. Transleer eerst naar 0,0. Die 300, 300 boeit natuurlijk niet. Daarna is het een eenvoudig wiskundig probleem:
yep.. mee eens, dit is een stuk eenvoudiger. negeer mijn vorig verhaal (als het al klopt. ;) )

ik sluit me aan bij deze pipo :+

  • Potatoman
  • Registratie: September 2000
  • Laatst online: 23:04
Op maandag 22 oktober 2001 20:52 schreef mbravenboer het volgende:

[..]

Dit kan je heel eenvoudig oplossen. Transleer eerst naar 0,0. Die 300, 300 boeit natuurlijk niet. Daarna is het een eenvoudig wiskundig probleem:
code:
1
2
3
4
5
6
7
     /|
    / |
100/  |
  /   | y
 / 60 |
/_____|
   x

Met behulp van enige wiskunde kan je eenvoudig zowel x als y berekenen (dat zou je moeten kunnen). Daarna tel je bij deze x en y 300 en 300 op en klaar :) .
Precies, met enige wiskunde wil dat wel, maar nou nog in java |:(

The cyclographing developer


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 22:25

Janoz

Moderator Devschuur®

!litemod

Aangezien je niet de slimste bent :P zal ik het dan maar ff voor je uitschrijven?
code:
1
2
3
4
5
6
double hoek = 60 *(Math.PI/180);
int startx = 300;
int starty = 300;
int eindx=Math.Round(300 + 100 * Math.sin(hoek));
int eindy=Math.Round(300 + 100 * Math.cos(hoek));
g.drawLine(startx,starty,eindx,eindy);

Niet getest, zelfs niet gecompileerd, maar als je er nu nog niet uit komt... dan weet ik het niet meer.......

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Potatoman: Precies, met enige wiskunde wil dat wel, maar nou nog in java |:(
Sorry hoor, maar dit is toch echt triviaal... Ik heb de procedure exact beschreven. Je beweert dat je genoeg wiskunde kennis hebt. Schrijf dan eerst eens op wat volgens jou de lengte van de x en de y kant is in normale taal. Daarna is een omzetting naar code zo mogelijk nog trivialer.

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • irmscher
  • Registratie: Juli 2001
  • Laatst online: 30-05-2025
ik zit dus met het zelfde probleem.
en ik kom er nog steeds niet uit.
zal wel komen omdat ik nog maar 6 week les heb gehad over java.

  • Potatoman
  • Registratie: September 2000
  • Laatst online: 23:04
Op dinsdag 23 oktober 2001 14:58 schreef irmscher het volgende:
ik zit dus met het zelfde probleem.
en ik kom er nog steeds niet uit.
zal wel komen omdat ik nog maar 6 week les heb gehad over java.
Hmm dan zal je ook wel HIO doen op de hanze zeker?

[Edit]Oeps ja, idd, de code van Janoz werkt, ik had alleen over de eerste regel heen gelezen :D.
* Potatoman |:( maar ik begrijp het nu, bedankt iedereen iig :)

The cyclographing developer


  • irmscher
  • Registratie: Juli 2001
  • Laatst online: 30-05-2025
klopt. HIO aan de hanze.
en ehm... waarom werkt hij bij kou wel??? en krijg ik het hier niet aan de gang?

  • Tsjipmanz
  • Registratie: Oktober 2000
  • Laatst online: 13-05 14:52

Tsjipmanz

Der Rudi ist da

Op dinsdag 23 oktober 2001 18:58 schreef irmscher het volgende:
klopt. HIO aan de hanze.
en ehm... waarom werkt hij bij kou wel??? en krijg ik het hier niet aan de gang?
edit:
hier stond iets stoms |:(


Bovendien is "ik krijg het niet aan de gang" niet een foutmelding waar mensen je echt verder mee kunnen helpen, je zal info moeten geven over wat niet lukt en waarom het niet lukt (dus foutmeldingen etc).

There's no such thing as a mistake, just happy accidents - Bob Ross
Relaxte muziek: altijd okee!
- Soulseek rulez -


  • Potatoman
  • Registratie: September 2000
  • Laatst online: 23:04
Op dinsdag 23 oktober 2001 18:58 schreef irmscher het volgende:
klopt. HIO aan de hanze.
en ehm... waarom werkt hij bij kou wel??? en krijg ik het hier niet aan de gang?
Dit is het stukje code wat ik daarvoor heb gebruikt:
code:
1
2
3
4
5
6
int armLengte = 100;
        double hoekArm = armGraad*(Math.PI/180);
        int eindX=(int)(armLengte*Math.sin(hoekArm));
        int eindY=(int)(armLengte*Math.cos(hoekArm));
        g.setColor(Color.blue);
        g.drawLine(horizontaalWaarde,verticaalWaarde,horizontaalWaarde+eindX,verticaalWaarde-eindY)

Voor de liefhebber, mijn final java progje:
http://home.wxs.nl/~rheide/Program.html

Kraak het niet te veel af aub, hierin is zo'n beetje allees geburikt wat ik in zes weken heb moeten leren.. (en das niet veel :) )

The cyclographing developer


  • The - DDD
  • Registratie: Januari 2000
  • Laatst online: 03-09 16:40
Waarom zit ik mechanische geluiden te maken als ik aan die schuifjes van je applet zit te pielen...

Volgende keer je Grphics dubbelbuufferen. Krijg je die zwarte lijnen niet.

Dus je getekende buffer met rust laten, tekenen op een niet weergegeven buffer, buffers wisselen, repaint. Veel mooier eindresultaat en een klein beetje meer geheugen gebruik. Je buffers zijn dus graphics objecten. :)

  • irmscher
  • Registratie: Juli 2001
  • Laatst online: 30-05-2025
hij werkt hier nu ook! thx
Pagina: 1