Будем признательны за любую помощь в разработке фрагмента скрипта Livecode для рисования и заполнения группы равносторонних треугольников.
Я работаю над приложением с открытым исходным кодом, которое помогает людям создавать и делиться историями с фрактальным узором.
Ключевой задачей является рисование треугольников, которые будут представлять следующие элементы истории:
- Аттрактор
- Вызов
- Возможность (изменение состояния для снятия напряжения)
- Стратегия
- Контрольная работа
- Решение
Каждый из шести стандартных элементов истории, указанных выше, будет отображаться в приложении в виде равностороннего треугольника. Каждый элемент, в свою очередь, будет связан с определенным цветом — желтым, красным, оранжевым, фиолетовым, синим или зеленым.
Я бы хотел, чтобы скрипт Livecode рисовал шесть треугольников, которые совмещались бы, как кусочки пирога, и образовывали бы шестиугольник, представляющий все повествование.
Прозрачность (уровень смешивания) каждого цветного сегмента будет указывать на степень, в которой автор(ы) рассказа или приглашенные рецензенты считают этот элемент рассказа завершенным.
Я надеюсь придумать скрипт на Livecode, который будет:
быстро нарисуйте шесть треугольников, чтобы сформировать шестиугольную форму
заполните каждый треугольник соответствующим цветом (каждый цвет будет иметь начальный уровень смешивания почти прозрачного 90 процентов)
присвоить уникальное короткое имя каждому из шести треугольников на основе названия его цвета заливки
сгруппируйте шесть треугольников, чтобы их можно было перетаскивать вместе в новые места на экране.
Есть ли какие-нибудь скрипты (или куски), которые могут помочь в этом? Глубоко признателен за любой образец кода или ссылки, которые помогут сократить мою кривую обучения Livecode.
Лучший,
Марк Фрейзер
====== Обновление прогресса! ====== [2 августа, 18:00 по восточному поясному времени]
Я только что нашел и адаптировал скрипт генерации полигонов Ллойда Рибера из Univ. Грузии, которая создает шестиугольники. Есть ли способ настроить его так, чтобы он мог создать равносторонний треугольник, который затем можно скопировать и повернуть, чтобы заполнить шестиугольник?
on mouseUp
global tpoints
if exists(grc "HexagonCanvas" of this card) then delete grc "HexagonCanvas"
lock screen
create grc "HexagonCanvas"
set the loc of grc "HexagonCanvas" to "140,140"
set the opaque of grc "HexagonCanvas" to true
-- resize the new grc
get the rect of grc "HexagonCanvas"
add 80 to item 4 of it
set the rect of grc "HexagonCanvas" to it
put the topleft of grc "HexagonCanvas" into TL
put the topright of grc "HexagonCanvas" into TR
put the bottomleft of grc "HexagonCanvas" into BL
put the bottomright of grc "HexagonCanvas" into BR
put the width of grc "HexagonCanvas" into twidth
put the height of grc "HexagonCanvas" into theight
put trunc(twidth/4) into twidthquart
put trunc(theight/2) into theighthalf
#=========set the points for the "free" hexagon polygon==================
put empty into tpoints
put (item 1 of TL + twidthquart, item 2 of TL) into tpoints
# for the first line of tpoints "put into"
put Cr& (item 1 of TL, item 2 of TL + theighthalf) after tpoints
put CR& (item 1 of BL + twidthquart, item 2 of BL) after tpoints
put CR& (item 1 of BR - twidthquart, item 2 of BR) after tpoints
put Cr& (item 1 of BR, item 2 of BR - theighthalf) after tpoints
put CR& (item 1 of TR - twidthquart, item 2 of TR) after tpoints
put CR& (item 1 of TL + twidthquart, item 2 of TL) after tpoints
set the points of grc "HexagonCanvas" to tpoints
set the style of grc "HexagonCanvas" to "polygon"
set the backgroundColor of grc "HexagonCanvas" to blue
set the blendlevel of grc "HexagonCanvas" to "60"
choose browse tool
end mouseUp