![]() |
|
||||||||||
|
|||||
|
Регистрация: Apr 2012
Сообщений: 213
|
AS у меня пока в стадии изучения) Хотелось бы чего-то конкретнее по теме
Добавлено через 12 минут Ну так что? Ещё кто-то чем-то может помочь? |
|
|||||
|
Modus ponens
|
Пожалуйста, не нужно много раз спрашивать "что никто не может помочь?" - вы только создаете шум, но не увеличиваете ваши шансы получить помощь. Ваши шансы сильно возрастут если вы начнете что-то делать, и потом покажете ваш код. А может и не покажете, потому что и без того будет работать.
__________________
Hell is the possibility of sanity |
|
|||||
|
Регистрация: Nov 2010
Сообщений: 430
|
Для рисования (визуализации) вам понадобится (если нужен, конечно) класс Graphics, полезны будут moveTo, lineTo и т.д.
Для хранения координат можно использовать классы Point или Vector3D. Нарисовать можно так: С расчетами разберитесь и «рисуйте».
__________________
Лучше спросить и выставить себя дураком на пять минут, чем не спросить и остаться дураком на всю жизнь. Последний раз редактировалось Srednas; 14.11.2012 в 09:52. |
|
|||||
|
блогер
Регистрация: Feb 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 2,113
Записей в блоге: 1
|
Держите простой набросок рендеринга векторов. Смысл следующий: у вас есть массивы основных векторов (которые пользователем задаются) и, соответственно, массивы получившихся векторов (те, которые показывают результат операции).
При обновлении данных об основных векторах или изменении операции, собственно, когда нужно отрисовать новую картинку, вы должны очистить массив resultVectors и заполнить его данными о новых получившихся векторах. Так же и с массивом currentVectors. Ну и вызвать метод renderScene после этого. Надеюсь примерно понятно объяснил. Так, как я не знаю, в каком формате ты будете хранить данные о векторе, оставил пустым метод drawVector. Думаю, сами разберетесь. Кстати для рисования стрелочек в помощь вам метод drawArrowPart. Последний параметр angle в радианах и указывает направление стрелки. var currentVectors:Array = []; var resultVectors:Array = []; var drawContainer:Sprite = new Sprite(); addChild(drawContainer); drawContainer.x = drawContainer.y = 20; var drawGraphics:Graphics = drawContainer.graphics; var sceneSize:Rectangle = new Rectangle(0,0,300,300); var sceneCenterPoint:Point = new Point(20,200); function drawArrowPart(gr:Graphics,x:Number,y:Number,angle:Number = 0):void { var subLength:Number = 10; var subAngle:Number = 15; var subRadAngle:Number = Math.PI - (subAngle * Math.PI / 180); var subX:Number; var subY:Number; subX = x + Math.cos(angle - subRadAngle) * subLength; subY = y + Math.sin(angle - subRadAngle) * subLength; gr.moveTo(x,y); gr.lineTo(subX,subY); subX = x + Math.cos(angle + subRadAngle) * subLength; subY = y + Math.sin(angle + subRadAngle) * subLength; gr.moveTo(x,y); gr.lineTo(subX,subY); } function drawVector(gr:Graphics, vector:*, color:uint) { // Here we need to draw vector } function renderScene():void { drawGraphics.clear(); // draw axis drawGraphics.lineStyle(1,0x0000000, 0.25); drawGraphics.drawRect(sceneSize.left, sceneSize.top, sceneSize.width, sceneSize.height ); drawGraphics.lineStyle(1,0x0000000,1); // x drawGraphics.moveTo(sceneSize.left, sceneCenterPoint.y); drawGraphics.lineTo(sceneSize.right, sceneCenterPoint.y); drawArrowPart(drawGraphics, sceneSize.right, sceneCenterPoint.y, 0); // y drawGraphics.moveTo(sceneSize.left + sceneCenterPoint.x, sceneSize.bottom); drawGraphics.lineTo(sceneSize.left + sceneCenterPoint.x, sceneSize.top); drawArrowPart(drawGraphics, sceneSize.left + sceneCenterPoint.x, sceneSize.top, -Math.PI / 2); // now render current vectors; var k:int; for (k = 0; k < currentVectors.length; k++) { drawVector(drawGraphics, currentVectors[k], 0xFF0000); } for (k = 0; k < resultVectors.length; k++) { drawVector(drawGraphics, resultVectors[k], 0x30A4AE); } } renderScene();
__________________
hauts.ru |
|
|||||
|
Регистрация: Apr 2012
Сообщений: 213
|
Извините меня за мою непонятливость, я не совсем понял, что нужно писать в метод drawVector. И вообще код не совсем понятен Не подскажите, где я бы смог прочитать про команды, которые использованы в коде.
|
|
|||||
|
блогер
Регистрация: Feb 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 2,113
Записей в блоге: 1
|
// Создаем массив для векторов, которые определяются пользователем var currentVectors:Array = []; // Создаем массив для векторов, которые создаются после какой-либо операции с векторами var resultVectors:Array = []; // Создаем новый спрайт и размещаем его на сцене. Он нужен для того, чтобы отрисовывать в него графику var drawContainer:Sprite = new Sprite(); addChild(drawContainer); drawContainer.x = drawContainer.y = 20; // Сохраняем ссылку на свойство graphics у нового спрайта, чтобы не обращаться каждый раз drawContainer.graphics. а просто drawGraphics. var drawGraphics:Graphics = drawContainer.graphics; // Сохраняем размер области для отрисовки var sceneSize:Rectangle = new Rectangle(0,0,300,300); // Сохраняем положение центра координат относительно области отрисовки var sceneCenterPoint:Point = new Point(20,200); // Метод для рисования кусочков стрелок // Принимает параметры: // gr:Graphics - это ссылка на объект graphics, с помощью которого (в который) будем рисовать // x - координата икс крайней точки стрелки // y - коордната игрек крайней точки стрелочки // angle - угол в радианах, характеризующий направление стрелки function drawArrowPart(gr:Graphics,x:Number,y:Number,angle:Number = 0):void { var subLength:Number = 10; var subAngle:Number = 15; var subRadAngle:Number = Math.PI - (subAngle * Math.PI / 180); var subX:Number; var subY:Number; subX = x + Math.cos(angle - subRadAngle) * subLength; subY = y + Math.sin(angle - subRadAngle) * subLength; gr.moveTo(x,y); gr.lineTo(subX,subY); subX = x + Math.cos(angle + subRadAngle) * subLength; subY = y + Math.sin(angle + subRadAngle) * subLength; gr.moveTo(x,y); gr.lineTo(subX,subY); } // Метод для отрисовки вектора. Принимает параметры // gr:Graphics - это ссылка на объект graphics, с помощью которого (в который) будем рисовать // vector - это экземпляр класса, хранящего параметры вектора. Как вы его напишите, так и будет. Я бы использовал поля x1,x2,y1,y2 для описания вектора. // color - цвет отрисовки function drawVector(gr:Graphics, vector:*, color:uint) { // Здесь берем объект графикс, ставим ему нужный цвет для отрисовки // Потом берем вектор, который передается сюда // Потом используя данные вектора отрисовываем его } // Метод для отрисовки сцены. При изменении параметрой вводимых векторов или при изменении операции над ними - вызываем этот метод. Точнее сначала обновляем массивы векторов, которые используются, потом вызываем. function renderScene():void { // Очищаем отрисованную графику, чтобы предыдущие картинки не накладывались с новой drawGraphics.clear(); // Рисуем оси координат и рамку // draw axis drawGraphics.lineStyle(1,0x0000000, 0.25); drawGraphics.drawRect(sceneSize.left, sceneSize.top, sceneSize.width, sceneSize.height ); drawGraphics.lineStyle(1,0x0000000,1); // x drawGraphics.moveTo(sceneSize.left, sceneCenterPoint.y); drawGraphics.lineTo(sceneSize.right, sceneCenterPoint.y); drawArrowPart(drawGraphics, sceneSize.right, sceneCenterPoint.y, 0); // y drawGraphics.moveTo(sceneSize.left + sceneCenterPoint.x, sceneSize.bottom); drawGraphics.lineTo(sceneSize.left + sceneCenterPoint.x, sceneSize.top); drawArrowPart(drawGraphics, sceneSize.left + sceneCenterPoint.x, sceneSize.top, -Math.PI / 2); // Теперь проходимся по массивам с векторами и отрисоываем их. // now render current vectors; var k:int; for (k = 0; k < currentVectors.length; k++) { drawVector(drawGraphics, currentVectors[k], 0xFF0000); } for (k = 0; k < resultVectors.length; k++) { drawVector(drawGraphics, resultVectors[k], 0x30A4AE); } } // Первичный вызов для того, чтобы отрисовать оси координат. renderScene(); Digital, задавайте конкретнее вопросы, описывать весь код и как он работает довольно проблематично. И, кстати, не нужно в личных сообщениях переспрашивать, ответят ли вам. У каждого на форуме есть свои дела, свое желание помочь и, в конце-концов, свой часовой пояс. Добавлено через 2 минуты Цитата:
__________________
hauts.ru |
|
|||||
|
Регистрация: Apr 2012
Сообщений: 213
|
А обязательно класс писать для drawvector? Мне же всего на четыре кнопки, не очень то и громоздко будет=).
|
|
|||||
|
Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
|
Цитата:
__________________
Загружаем картинки, минуя ошибки безопасности |
|
|||||
|
Регистрация: Apr 2012
Сообщений: 213
|
Цитата:
Добавлено через 26 минут Что писать в классе я уже понял и я понимаю, что там нужно писать для суммы и разности векторов. Я не понимаю как привязать этот класс к коду. Очевидно это надо сделать в функции DrawVector, но как в силу своих пока ещё не больших знаний - не знаю. Последний раз редактировалось Digital; 16.11.2012 в 01:00. |
|
|||||
|
Регистрация: Jul 2008
Сообщений: 912
|
Лучше почитать Колина Мука http://book.tr200.net/v.php?id=277635 и писать всё в редакторе кода FlashDevelop, тогда всё станет на свои места.
|
![]() |
![]() |
Часовой пояс GMT +4, время: 23:24. |
|
|
« Предыдущая тема | Следующая тема » |
|
|