Форум программистов, компьютерный форум, киберфорум
Наши страницы
ActionScript
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
maxisglad
1 / 1 / 2
Регистрация: 07.03.2012
Сообщений: 77
1

Нарисовать многоугольник

12.10.2014, 15:49. Просмотров 1216. Ответов 11
Метки нет (Все метки)

подскажите как нарисовать многоугольник программно. (мне конкретно нужен 6 угольник) представление имею что окружность надо поделить на 6 и соединить точки а как не могу понять.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.10.2014, 15:49
Ответы с готовыми решениями:

Нарисовать многоугольник
Здравствуйте :) Я не халявщик, просто не хватает опыта. У меня задача:...

нарисовать многоугольник
Подскажите пожалуйста новичку! Как нарисовать многоугольник напрямую на canvas?...

Нарисовать многоугольник
У меня есть массив из n элментов. 3>n>11. Point points. В points хранятся...

Нарисовать многоугольник
здравствуйте! Мне надо построить такой многоугольник, а я наугад чертил...

Нарисовать многоугольник с диагоналями
Помогите, пожалуйста. Есть начало кода - построение многоугольника. Не знаю...

11
bus
34 / 34 / 3
Регистрация: 17.05.2014
Сообщений: 144
12.10.2014, 20:09 2
А у Вас не получается почему? Вы не знаете как в as3 рисовать произвольные фигуры или Вы не знаете геометрию на уровне пятого класса?
И какой именно шестиугольник Вам нужен?

Добавлено через 11 минут
Есть очень простой вариант ( он для тех, кто не хочет учить геометрию и став "прогером" ему придется только хоронить flash так как покорить его не получилось ) при помощи методов lineTo moveTo класса Graphicsююю
Создаете экземпляр потомка DisplayObject и и переносите перо в его верхней центр и это будет первой точкой.
Теперь крутите Ваш объект на 60 градусов и задаете точку опять в верху в центре. И получается, что предыдущая точка и текущая, образуют прямую. И если так крутануть шесть раз, то получится - шестиугольник.
0
TanaTiX
Модератор
2798 / 1652 / 168
Регистрация: 19.02.2011
Сообщений: 6,011
Завершенные тесты: 2
12.10.2014, 20:30 3
ActionScript 3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
package  
{
    import flash.display.Shape;
    import flash.display.Sprite;
    import flash.geom.Point;
    
    /**
     * ...
     * @author TanaTiX
     */
    public class Main extends Sprite 
    {
        private static const SIDES:uint = 6;//кол-во сторон
        private static const CENTER:Point = new Point(100, 100);//центр фигуры
        private static const RADIUS:uint = 50;//радиус
        
        public function Main() 
        {
            init();
        }
        
        private function init():void 
        {
            //координаты выведены в отдельные переменные для удобства
            var cx:Number = CENTER.x;
            var cy:Number = CENTER.y;
            //
            var px:Number;
            var py:Number;
            //
            var dirx:Number;
            var diry:Number;
            var ang:Number;
            //
            var sh:Shape = new Shape();
            sh.graphics.lineStyle(1);
            sh.graphics.moveTo(cx + RADIUS, cy);//"выходим на исходную"
            for (var i:int = 0; i < SIDES; i++) 
            {
                ang = i * 2 / SIDES * Math.PI;//360/180 сокращено до 2х, угол представлен в радианах
                dirx = Math.cos(ang);
                diry = Math.sin(ang);
                px = RADIUS * dirx;
                py = RADIUS * diry;
                sh.graphics.lineTo(cx + px, cy + py);
            }
            sh.graphics.lineTo(cx + RADIUS, cy);//закрываем фигуру
            addChild(sh);
        }
        
    }
 
}
1
maxisglad
1 / 1 / 2
Регистрация: 07.03.2012
Сообщений: 77
12.10.2014, 21:21  [ТС] 4
а еще один вопрос почему я его помещаю в другой спрайт, он(многоугольник) не достает до границ но спрайт увеличивает. в размерах

Добавлено через 6 минут
Извините это происходило при повороте.

Добавлено через 3 минуты
не пойму почему когда я его поворачиваю на 30 градусов он вылазиет за границы хотя визуально этого не видно
0
TanaTiX
Модератор
2798 / 1652 / 168
Регистрация: 19.02.2011
Сообщений: 6,011
Завершенные тесты: 2
12.10.2014, 21:29 5
Цитата Сообщение от maxisglad Посмотреть сообщение
когда я его поворачиваю на 30 градусов он вылазиет за границы хотя визуально этого не видно
Немного странное утверждение. Если вы этого не наблюдаете, то почему считаете, что он "вылазиет"?
0
maxisglad
1 / 1 / 2
Регистрация: 07.03.2012
Сообщений: 77
12.10.2014, 21:35  [ТС] 6
изменения размера спрайта на котором помещен многоугольник заметны
0
maxisglad
1 / 1 / 2
Регистрация: 07.03.2012
Сообщений: 77
12.10.2014, 21:38  [ТС] 7
вот изображение
0
Изображения
  
bus
34 / 34 / 3
Регистрация: 17.05.2014
Сообщений: 144
12.10.2014, 21:42 8
Если в Вас засунуть слона Вы останетесь таким же или примете размеры слона?
0
maxisglad
1 / 1 / 2
Регистрация: 07.03.2012
Сообщений: 77
12.10.2014, 21:46  [ТС] 9
да причем тут это я понимаю что его размер стал больше и край спрайта вылезает за рамки я спрашиваю как повернуть фигуру безболезненно, или её изначально надо рисовать в повернутом состоянии.
0
bus
34 / 34 / 3
Регистрация: 17.05.2014
Сообщений: 144
12.10.2014, 21:56 10
Цитата Сообщение от maxisglad Посмотреть сообщение
а причем тут это я понимаю что его размер
Не понимает раз спрашиваете, вот я объяснил на примере слона. Контайнер всегда имеет размер своего содержимого.
Но чтобы это обойти, Вам нужно высчитать максимальный размер вложенности и отрисовать контайнер с учетом этого максимального размера.
0
TanaTiX
Модератор
2798 / 1652 / 168
Регистрация: 19.02.2011
Сообщений: 6,011
Завершенные тесты: 2
12.10.2014, 23:04 11
bus, думаю, ТС-у хватит использования матриц (Matrix)
0
bus
34 / 34 / 3
Регистрация: 17.05.2014
Сообщений: 144
12.10.2014, 23:48 12
TanaTiX, Вы меня, думаю, как и ТС, заинтересовали. Я не могу представить как матрица поможет.
Вообще я редко сталкиваюсь с рисованием graphics и сейчас даже решил попробовать воспроизвести проблему,
но сразу увидел то, про что уже забыл. Если не перерисовывать контейнер, то он свой graphics не увеличит.
И если ТС не перерисовывает зеленый квадрат каждый кадр, то значит он либо рисует его после шестиугольника,
который УЖЕ повернут. Или же ТС учитывает при рисовании зеленого graphics увеличенную ширину и высоту шестиугольника.
И из вышеперечисленного уже можно сделать вывод, что зеленый graphics рисовать нужно ДО шестиугольника, если конечно не нужно перерисовывать по enterFrame.
0
12.10.2014, 23:48
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.10.2014, 23:48

Как нарисовать многоугольник
Не могу понять как нарисовать многоугольник. то есть я знаю что надо...

Как нарисовать многоугольник?
Хочу нарисовать многоугольник с некоторыми координатами углов. Как?!

Как нарисовать правильный многоугольник?
Добрый день. Вроде поню была функция отрисовки правильного многоугольника,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru