IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> Поворот треугольника, Java2
сообщение
Сообщение #1


Ищущий истину
******

Группа: Пользователи
Сообщений: 4 825
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


Есть треугольник.
Нужно поворачивать его.

Задаю я его так.
3 точки.
Есть координаты curX и curY это координаты реальные на экране.
А x1,y1, x2,y2, x3,y3 - это координаты треугольника относительно точки (0,0)
которая при выводе треугольника равна curX, xurY

Как повернуть треугольнк скажем по часовой стрелки, например вокруг этой точки (0,0)

Вот у меня что...
package mainpack;

import java.awt.Color;
import java.awt.Graphics;
import java.math.*;
import java.util.Random;


public class NewThread implements Runnable{

Thread t;
Thread mainTh;
// данные полигона
boolean isLife = true;
// цвет
Color polColor = Color.black;
public void setColor(Color x) {
this.polColor = x;
}
public Color getColor() {
return this.polColor;
}
// количество точек
int PointCount=3;
// координаты точек
protected PointXY thePoint[] = new PointXY[PointCount];
// данные о движении
int curX=0,curY=0;
public int speedUp=0, speedLeft=0;
public double xan=0.001;
//нужно ли поворачивать
boolean isRotate = false;
// действия над объектом
public void moveUpDown() {
if (this.curY > 0) {
this.curY = this.curY - speedUp;
}
}
public void moveLeftRight() {
if (this.curX >0) {
this.curX = this.curX - speedLeft;
}
}
public void draw(Graphics g) {
g.drawLine(this.curX+thePoint[0].getX(),this.curY + thePoint[0].getY(),
this.curX +thePoint[1].getX() , this.curY +thePoint[1].getY());
g.drawLine(this.curX+thePoint[1].getX(),this.curY + thePoint[1].getY(),
this.curX +thePoint[2].getX() , this.curY +thePoint[2].getY());
g.drawLine(this.curX+thePoint[2].getX(),this.curY + thePoint[2].getY(),
this.curX +thePoint[0].getX() , this.curY +thePoint[0].getY());
}

NewThread(int x1,int y1,int x2,int y2,int x3,int y3) {
// инициализация полигона
thePoint[0] = new PointXY(x1,y1);
thePoint[1] = new PointXY(x2,y2);
thePoint[2] = new PointXY(x3,y3);
Random rnd = new Random();
this.curX = rnd.nextInt(100);
this.curY = rnd.nextInt(100);
if (curX < 20){curX*=3;}
if (curY < 20){curY*=3;}
//создание потока
t = new Thread(this,"Polygon");
//запуск потока
t.start();
}
public void calc() {
for (int i=0; i<=2; i++) {
double x = this.thePoint[i].getX();
double y = this.thePoint[i].getY();
double r = Math.sqrt( x*x + y*y);
x = r*Math.cos(xan);
y = r*Math.cos(xan);
this.thePoint[i].setX((int)Math.round(x));
this.thePoint[i].setY((int)Math.round(y));
}
xan+=0.001;
}
public void run() {
try {
// описание поведения объекта
while (isLife) {
moveUpDown();
moveLeftRight();
//if (this.isRotate) {calc(); }
calc();
Thread.sleep(100);
}
} catch (InterruptedException e) {
//System.out.println("Interrupt");
}
//System.out.println("Halt");
}
}


Метод calc должен вычислять поворот каждой точки, но почему то треугольник быстро уползает куда то а не поворачивается.


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Ищущий истину
******

Группа: Пользователи
Сообщений: 4 825
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


Все, вопрос исчерпан,
http://main.soobcha.org/delphin/004.html
вот тут нашел ответ работающий smile.gif


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






Беглый просмотр обнаружил по крайней мере одну ошибку: при вычислении Y ты используешь cos вместо sin
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 29.11.2020 6:07
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name