|
|
|
|||||||
| Знаете ли Вы, что ... | |
| ...нарушения правил форума наказываются. Старайтесь их не нарушать. | |
| << Предыдущий совет - Случайный совет - Следующий совет >> | |
| Разминка для мозгов Загадки, задачи, головоломки - тренируем мозг |
| Ответить |
|
|
Опции темы | Опции просмотра |
|
|
#11 |
![]() Служу Его Божественной Тени!
Сообщений: 1,671
+ 4,505
1,372/657
– 164
33/27
![]() |
Фигу, как минимум направление поворота взял неправильно, и как следствие - местами координаты перепутал.
x: 848.5273282043654, y: 282.8424427347886, (Впрочем, на особую точность у чисел с плавающей запятой я-б рассчитывать не стал)
__________________
Are you my mommy? Последний раз редактировалось DarkUser; 04.07.2014 в 14:41. |
|
|
Ответить |
|
"+" от:
|
|
|
#12 |
|
Необратил внимание.
На чём считали и как? Я так прям в лоб на pl/sql что под рукой было.create or replace procedure test_robot is distance number; angle number; x number; y number; begin distance := 1000; angle := 1; x := 0; y := 0; loop if angle = 5 then angle := 1; end if; if angle = 1 then x := x+(SQRT((power(distance,2))/2)); y := y+(SQRT((power(distance,2))/2)); end if; if angle = 2 then x := x+(SQRT((power(distance,2))/2)); y := y-(SQRT((power(distance,2))/2)); end if; if angle = 3 then x := x-(SQRT((power(distance,2))/2)); y := y-(SQRT((power(distance,2))/2)); end if; if angle = 4 then x := x-(SQRT((power(distance,2))/2)); y := y+(SQRT((power(distance,2))/2)); end if; distance:=distance/2; --расстояние на 2 angle := angle+1; --поворот на 90 градусов exit when (distance < 0.001); --взрыв end loop; dbms_output.put_line(to_char(x)||'--'||to_char(y)); end test_robot; Последний раз редактировалось Nestik; 04.07.2014 в 14:47. |
|
|
|
Ответить |
|
"+" от:
|
|
|
#14 |
![]() |
Код:
package qrobot;
import static java.lang.Math.sqrt;
public class QRobot {
public static void main(String[] args) {
final double sqr2=sqrt(2.0)/2.0;
double distance=1000.0;
double vX=sqr2, vY=sqr2;
double x=0, y=0;
while (distance>0.001) {
x+=vX*distance;
y+=vY*distance;
// Подготовка к следующей итерации
distance*=0.5;
vX+=vY;
vY-=vX;
vX+=vY;
}
System.out.println("x="+x+", y="+y);
}
__________________
Тот факт, что медуза выжила 650 миллионов лет без мозгов, даёт надежду многим. |
|
|
Ответить |
|
3 "+" от:
|
| Реклама и уведомления | |
|
|
#15 |
![]() Служу Его Божественной Тени!
Сообщений: 1,671
+ 4,505
1,372/657
– 164
33/27
![]() |
Код:
var Bot = function(x, y, angle) {
var state = {x: x || 0, y: y || 0, angle: angle || 0};
this.rotate = function(angle) {
state.angle = state.angle + angle;
return this;
};
this.move = function(distance) {
state.x = state.x + distance * Math.cos(state.angle);
state.y = state.y + distance * Math.sin(state.angle);
return this;
};
this.getPos = function() {
return {x: state.x, y: state.y};
};
this.toString = function() {
return JSON.stringify(state);
}
};
var distance = 1000, angleStart = Math.PI / 4, angleStep = -Math.PI / 2
var step = 1;
var bot = new Bot(0, 0, angleStart);
while (distance > 0.001) {
bot.move(distance);
bot.rotate(angleStep);
console.log(step++, ":", bot.getPos());
distance = distance / 2;
};
alert ("step:" + step + "; " + bot);
__________________
Are you my mommy? |
|
|
Ответить |
|
2 "+" от:
|
|
|
#16 | |
![]() |
На работе сказали, что эта часть кода плохо читается:
Цитата:
А если «по-русски», то: (vX, vY) → (-vY, vX)
__________________
Тот факт, что медуза выжила 650 миллионов лет без мозгов, даёт надежду многим. |
|
|
|
Ответить |
|