Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 19.11.2016, 02:10
Garzovic вне форума Посмотреть профиль Отправить личное сообщение для Garzovic Найти все сообщения от Garzovic
  № 1  
Ответить с цитированием
Garzovic

Регистрация: Nov 2016
Сообщений: 3
По умолчанию Проблема с радиусом окружности

С помощью цикла создаю несколько точек, которые располагаются по окружности с радиусом 200, но после компиляции расстояние между центром окружности и точками не у всех одинаковое. Как это можно исправить?


Код AS3:
public function getCoordinates(centerPoint:Point,lengthLine:Number,angleInDegree:Number):Point
{
	const ANGLE_IN_RADIANS:Number = angleInDegree * Math.PI / 180;
 
	//Стороны:
	const SIDE_C:Number = lengthLine;
	const SIDE_B:Number = Math.sin(ANGLE_IN_RADIANS) * SIDE_C;
	const SIDE_A:Number = Math.cos(ANGLE_IN_RADIANS) * SIDE_C;
 
	return new Point(centerPoint.x - SIDE_B, centerPoint.y - SIDE_A);
}
 
 
const POINT_OF_IMPEDIMENT:Point = new Point(400, 400); 
const AMOUNT_OF_THE_POINTS_AROUND_THE_IMPEDINT:int = 360 / 36;
 
for (var indexThePointAroundTheImpediment:int = 0; indexThePointAroundTheImpediment < AMOUNT_OF_THE_POINTS_AROUND_THE_IMPEDINT; indexThePointAroundTheImpediment++)
{
	const ANGLE_OF_POINT:int = 36 * indexThePointAroundTheImpediment;
	const COORDINATES_THE_POINT_AROUND_THE_IMPEDIMENT:Point = this.getCoordinates(POINT_OF_IMPEDIMENT, 200, ANGLE_OF_POINT);
	const DISTANCE_BETWEEN_THE_POINT_AND_THE_IMPEDIMENT:Number = Point.distance(COORDINATES_THE_POINT_AROUND_THE_IMPEDIMENT, POINT_OF_IMPEDIMENT);
 
	trace(DISTANCE_BETWEEN_THE_POINT_AND_THE_IMPEDIMENT);
}

200
200
200
200
200.00000000000003
200
200
200.00000000000003
199.99999999999997
200.00000000000003

Старый 19.11.2016, 10:54
ZackMercury вне форума Посмотреть профиль Отправить личное сообщение для ZackMercury Найти все сообщения от ZackMercury
  № 2  
Ответить с цитированием
ZackMercury
 
Аватар для ZackMercury

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,918
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
Учитывайте погрешность вычислений. Компьютер пока что не гарантирует точность выполнения операций вычисления корня, умножения, деления, тригонометрии до триллионной.
Вам нужно округлить до ближайшего целого - Math.round().
__________________
There is no thing in this world that is not simple.

Старый 19.11.2016, 11:20
Garzovic вне форума Посмотреть профиль Отправить личное сообщение для Garzovic Найти все сообщения от Garzovic
  № 3  
Ответить с цитированием
Garzovic

Регистрация: Nov 2016
Сообщений: 3
Хорошо, раз это пока не исправить, то не подскажите как можно сделать так, чтобы объект, находясь от другого объекта на расстояние 100 пикселей, получал такой угол поворота, который ему поможет двигаться вокруг этого объекта не приближаясь и не отдаляясь (примерно 100) со скоростью 10 пикселей? Просто, если есть проблема с радиусом, то тогда угол портится, и то движение невозможно, всегда выходит так, что объект либо приближается к объекту слишком близко, либо уезжает за сцену. Так-то я брал первую и вторую точку, потом определял угол поворота первой точки по отношению ко второй, и этот угол служит для объекта углом поворота вокруг другого объекта.

Старый 19.11.2016, 11:35
ZackMercury вне форума Посмотреть профиль Отправить личное сообщение для ZackMercury Найти все сообщения от ZackMercury
  № 4  
Ответить с цитированием
ZackMercury
 
Аватар для ZackMercury

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,918
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
Эти погрешности настолько незначительны, что вряд ли заметно повлияют на работу вашей программы. 1 триллионная - это невероятно маленькая погрешность. Никак слишком близко объект не приблизится, как и не уедет за сцену.
__________________
There is no thing in this world that is not simple.

Старый 19.11.2016, 13:39
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 5  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Может чем-то поможет: http://flasher.ru/forum/showpost.php...1&postcount=18
__________________
Reality.getBounds(this);

Создать новую тему Ответ Часовой пояс GMT +4, время: 16:16.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 16:16.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.