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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 11.10.2012, 15:34
gagaga вне форума Посмотреть профиль Отправить личное сообщение для gagaga Найти все сообщения от gagaga
  № 11  
Ответить с цитированием
gagaga
[+1 22.04.13]
[+1 06.03.13]

Регистрация: Apr 2012
Сообщений: 239
через матрицу элементарно находится: создаем матрицу, поворачиваем её на нужный угол и в цикле смещаем на tx = width / divideBy и ty = height / divideBy и трансформируем исходную точку

Старый 11.10.2012, 15:35
Koopa вне форума Посмотреть профиль Найти все сообщения от Koopa
  № 12  
Ответить с цитированием
Koopa
Banned
[+1 30.08.14]
[+1 26.02.14]

Регистрация: Apr 2012
Сообщений: 162
Если я правильно понял точку вращения(левый верхний угол), то x1(начальная)=R, a x2=x1*cos(поворота).

Старый 11.10.2012, 15:47
Hauts вне форума Посмотреть профиль Отправить личное сообщение для Hauts Посетить домашнюю страницу Hauts Найти все сообщения от Hauts
  № 13  
Ответить с цитированием
Hauts
 
Аватар для Hauts

блогер
Регистрация: Feb 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 2,112
Записей в блоге: 1
Отправить сообщение для Hauts с помощью ICQ Отправить сообщение для Hauts с помощью Skype™
gagaga, плюсую, спасибо за помощь. Задачу решил.
__________________
hauts.ru

Старый 11.10.2012, 17:29
Isfet вне форума Посмотреть профиль Отправить личное сообщение для Isfet Найти все сообщения от Isfet
  № 14  
Ответить с цитированием
Isfet

Регистрация: Mar 2012
Адрес: г.Новосибирск
Сообщений: 381
через прямоугольные треугольники и через синус/косинус, один из углов которого будет угол на который повернут прямоугольник

Старый 11.10.2012, 17:36
Hauts вне форума Посмотреть профиль Отправить личное сообщение для Hauts Посетить домашнюю страницу Hauts Найти все сообщения от Hauts
  № 15  
Ответить с цитированием
Hauts
 
Аватар для Hauts

блогер
Регистрация: Feb 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 2,112
Записей в блоге: 1
Отправить сообщение для Hauts с помощью ICQ Отправить сообщение для Hauts с помощью Skype™
Isfet, попробуйте, мне интересно ваше решение.
__________________
hauts.ru

Старый 11.10.2012, 20:57
Koopa вне форума Посмотреть профиль Найти все сообщения от Koopa
  № 16  
Ответить с цитированием
Koopa
Banned
[+1 30.08.14]
[+1 26.02.14]

Регистрация: Apr 2012
Сообщений: 162
Цитата:
Сообщение от Hauts Посмотреть сообщение
Isfet, попробуйте, мне интересно ваше решение.
Все эти точки вращаются по окружности со своим начальным радиусом и поворачиваются на один и тот-же угол.Что тут сложного?
У всех точек радиус окружности: sqr(spawn(x(точки)-x(центра вращения),2)+spawn(у(точки)-у(центра вращения),2))
Дальше х2=r*cos(a) y2=r*sin(a).


Последний раз редактировалось Koopa; 11.10.2012 в 21:08.
Старый 11.10.2012, 23:29
Hauts вне форума Посмотреть профиль Отправить личное сообщение для Hauts Посетить домашнюю страницу Hauts Найти все сообщения от Hauts
  № 17  
Ответить с цитированием
Hauts
 
Аватар для Hauts

блогер
Регистрация: Feb 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 2,112
Записей в блоге: 1
Отправить сообщение для Hauts с помощью ICQ Отправить сообщение для Hauts с помощью Skype™
Koopa, "spawn", как я понимаю, это возведение в степень?

Код AS3:
import flash.display.Sprite;
 
function createRect(x:Number,y:Number,width:Number,height:Number,rotation:Number):Sprite {
	var rect:Sprite = new Sprite();
	rect.graphics.lineStyle(1,0xFFFFFF *Math.random());
	rect.graphics.beginFill(0xFFFFFF * Math.random(), 0.5);
	rect.graphics.drawRect(0,0,width, height);
	rect.graphics.endFill();
	rect.rotation = rotation;
	rect.x = x;
	rect.y = y;
	return rect;
}
var devideBy:int = 3;
var origX:Number = 250;
var origY:Number = 50;
var origWidth:Number = 360;
var origHeight:Number = 240;
var origRotation:Number = 46;
var origRadRotation:Number = origRotation * Math.PI / 180;
 
var origRect:Sprite = createRect(origX,origY,origWidth,origHeight,origRotation);
addChild(origRect);
 
var subWidth:Number = origWidth / devideBy;
var subHeight:Number = origHeight / devideBy;
var rad:Number;
var localSubX:Number;
var localSubY:Number;
var subX:Number;
var subY:Number;
for (var k:int = 0; k < devideBy; k++) {
	for (var j:int = 0; j < devideBy; j++) {
		localSubX = k * subWidth;
		localSubY = j * subHeight;
		rad = Math.sqrt((localSubX * localSubX) + (localSubY * localSubY));
		subX = origX + Math.cos(origRadRotation) * rad;
		subY = origY + Math.sin(origRadRotation) * rad;
		addChild(createRect(subX,subY,subWidth,subHeight,origRotation));
	}
}
Вы это имели в виду? Или я неправильно код написал? Поправьте, если "Что тут сложного?".

Это решение первое, что пришло мне в голову и с таким вариантом я всячески уже пробовал, но так и не решил. Решил с помощью матриц, как мне подсказал gagaga.
__________________
hauts.ru

Старый 12.10.2012, 00:09
Koopa вне форума Посмотреть профиль Найти все сообщения от Koopa
  № 18  
Ответить с цитированием
Koopa
Banned
[+1 30.08.14]
[+1 26.02.14]

Регистрация: Apr 2012
Сообщений: 162
rotationZ кто запретил?
и нет, origX и origY да и '+' да и формула не правильна.

p.s. извините увлёкся,spawn это pow

Старый 12.10.2012, 00:37
Hauts вне форума Посмотреть профиль Отправить личное сообщение для Hauts Посетить домашнюю страницу Hauts Найти все сообщения от Hauts
  № 19  
Ответить с цитированием
Hauts
 
Аватар для Hauts

блогер
Регистрация: Feb 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 2,112
Записей в блоге: 1
Отправить сообщение для Hauts с помощью ICQ Отправить сообщение для Hauts с помощью Skype™
При чем тут rotationZ ?

Koopa, а как же тогда в as написать формулу, про которую вы говорите?

Можно просто as, а не вокруг да около?
__________________
hauts.ru

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Код AS3:
package 
{
	import flash.display.Shape;
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.geom.Point;
	import flash.geom.Rectangle;
 
	/**
	 * ...
	 * @author wolsh
	 */
	public class Main extends Sprite 
	{
 
		public function Main():void 
		{
			if (stage) init();
			else addEventListener(Event.ADDED_TO_STAGE, init);
		}
 
		private function init(e:Event = null):void 
		{
			removeEventListener(Event.ADDED_TO_STAGE, init);
			// entry point
			var rectangle:Rectangle = new Rectangle(250, 50, 420, 330);
			tiling(rectangle, 30, 6, 8);
		}
 
		private function tiling(rect:Rectangle, rectRotation:Number, columns:uint, rows:uint):void
		{
			var tileW:Number = rect.width / columns;
			var tileH:Number = rect.height / rows;
			var angle:Number = rectRotation * Math.PI / 180;
			for (var i:uint = 0; i < rows; i++)
			{
				for (var j:uint = 0; j < columns; j++)
				{
					var tile:Shape = createTile(tileW, tileH);
					this.addChild(tile);
					var point1:Point = Point.polar(tileW * j, angle);
					var point2:Point = Point.polar(tileH * i, angle);
					tile.x = rect.x + point1.x - point2.y;
					tile.y = rect.y + point1.y + point2.x;
					tile.rotation = rectRotation;
				}
			}
		}	
 
		private function createTile(width:Number, height:Number):Shape
		{
			var tile:Shape = new Shape();
			tile.graphics.lineStyle(1, 0x660000);
			tile.graphics.beginFill(0xFF0000);
			tile.graphics.drawRect(0, 0, width, height);
			return tile;
		}
	}
}
__________________
Reality.getBounds(this);

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

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

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


 


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


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