|
|
Знаете ли Вы, что ... | |
...инструкция по установке аватара описана в Правилах форума. | |
<< Предыдущий совет - Случайный совет - Следующий совет >> |
Разминка для мозгов Загадки, задачи, головоломки - тренируем мозг |
Ответить |
|
Опции темы | Опции просмотра |
04.07.2014 14:39 | #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. |
|
Ответить |
"+" от:
|
04.07.2014 14:44 | #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. |
|
|
Ответить |
"+" от:
|
04.07.2014 15:16 | #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 "+" от:
|
Реклама и уведомления | |
04.07.2014 15:33 | #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 "+" от:
|
04.07.2014 17:21 | #16 | |
|
На работе сказали, что эта часть кода плохо читается:
Цитата:
А если «по-русски», то: (vX, vY) → (-vY, vX)
__________________
Тот факт, что медуза выжила 650 миллионов лет без мозгов, даёт надежду многим. |
|
|
Ответить |
|