Witam, wie ktos jak mozna narysowac cykloide w java. Nie chodzi mi o gotowy przyklad tylko o pare wskazowek.
Pozdrawiam
Hm, iterując t? Oczywiście nie możesz dodawać szeregu składników zmiennoprzecinkowych, bo ci się błędy zakumulują. Zastosuj mniej więcej taką pętlę:
double ostatnie_x = startowe_x;
double ostatnie_y = startowe_y;
for (int i = start; i * współczynnik_double < limit_double; i++) {
double t = i * współczynnik_double;
// tutaj obliczenia
double aktualne_x = ...
double aktualne_y = ...
// tutaj rysowanie
rysuj_linię od (ostatnie_x, ostatnie_y) do (aktualne_x, aktualne_y);
ostatnie_x = aktualne_x;
ostatnie_y = aktualne_y;
}
Mając t i r możesz łatwo wyliczyć aktualne x i y z wzorków: http://pl.wikipedia.org/wiki/Cykloida
Dzieki za pomoc ale i tak nie wiem jak to zrobic
z czym KONKRETNIE masz problem?
Problem mam z poskladaniem tych wzorow. A czy mozecie powiedziec mi czy to jest dobrze napisane?
SPIRALA
import java.awt.* ;
import java.awt.geom.* ;
public class Spirala extends DrawPanel {
public static void main(final String[] args) {
DrawFrame frame = new DrawFrame ("Drawing of a spiral") ;
Spiral drawing = new Spiral () ;
frame.add(drawing) ;
frame.pack() ;
frame.centreOnScreen() ;
frame.setVisible(true) ;
}
public Spiral() {}
public Spiral(final int w, final int h) {
super(w, h) ;
}
public void paint(final Graphics g) {
Graphics2D g2d = (Graphics2D)g ;
Rectangle2D rectangle = new Rectangle2D.Double (0, 0, 0, 0) ;
double theta = 0.0 ;
double increment = 2 * Math.PI/100.0 ;
for (int n = 0 ; n < 1500 ; ++n) {
theta += increment ;
double radius = 75.0 * n / 1000 ;
double x = 150 + (radius * Math.cos(theta)) ;
double y = 150 + (radius * Math.sin(theta)) ;
rectangle.setRect(x, y, 1, 1) ;
g2d.draw(rectangle) ;
}
}
}
Wykres cosinusa
import java.awt.*;
import java.applet.*;
public class wykres extends Applet
{ int scaleW, scaleH, baseY;
public void start ( )
{ // ustawienie skali rysowanego wykresu
scaleW = getSize().width;
scaleH = (int)((getSize().height-50)/2);
baseY = (int)(getSize().height/2+20);
// ustawienie tła apletu
setBackground(Color.white);
}
// funkcja obliczająca współrzędną Y funkcji cos
double fCos (double x)
{ double cos = Math.cos(x) * scaleH;
return (baseY - cos);
}
public void paint (Graphics g)
{ // stała π i krok zmiany X w skali wykresu
double x = -3.14;
double step = (2 * 3.14) / (getSize().width - 60);
// rysowanie osi Y
g.drawLine(20, baseY, scaleW-20, baseY);
g.drawLine(scaleW-30, baseY-5, scaleW-20, baseY);
g.drawLine(scaleW-30, baseY+5, scaleW-20, baseY);
// rysowanie osi X
g.drawLine((int)(scaleW/2),30, (int)(scaleW/2), getSize().height-2);
g.drawLine((int)(scaleW/2)-5, 40, (int)(scaleW/2), 30);
g.drawLine((int)(scaleW/2)+5, 40, (int)(scaleW/2), 30);
// rysowanie wykresu funkcji cosinus
g.setColor(Color.blue);
x = -3.14;
for (int i = 30 ; i < getSize().width-30 ; i++,x+=step )
{ g.drawLine(i, (int)fCos(x), i + 1, (int)fCos(x + step));
}
}
}
}
```java
Bo u mnie kompiluje sie ale wyswietla jakis blad
Wyobraź sobie sytuację - dostarczasz niesprawny samochód do mechanika, a na jego pytanie co się zepsuło, jakie są objawy niedziałania odpowiadasz - coś nie działa. Panie Zenku, coś mi nie działa w samochodzie, proszę naprawić; ale proszę też go nie uruchamiać (nie każdy z nas ma kompilator javy i czas na kompilację).
więc - JAKI KU*WA "JAKIŚ BŁĄD"?!?!?
Error : Invalid path, \bin\javac.exe -g -classpath
A co to polecenie: \bin\javac.exe -g -classpath ma wg Ciebie robić? Uruchamiasz kompilator nie podając co ma być skompilowane.
Mam napisany program spirala i wybieram w menu Build file i pojawia sie:
Error : Invalid path, \bin\javac.exe -g -classpath "C:\Documents and Settings\fg\Moje dokumenty" -d "C:\Documents and Settings\fg\Moje dokumenty" "C:\Documents and Settings\fg\Moje dokumenty\Spirala.java"
Process completed.
Moglby mi ktos wyjasnic o co w tym chodzi. Jestem poczatkujacy nie kazdy rodzi sie ze znajomoscia programowania