Автор Тема: Идея семи-осника  (Прочитано 8078 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн myth

  • Постоялец
  • ***
  • Сообщений: 107
  • Пол: Мужской
  • ---я вернулся?---
Re: Идея семи-осника
« Ответ #30 : 27 июля 2023, 09:27:16 »
Реализовал все разрезы.
Решил сделать в форме "подушки", чтоб детали никакие не торчали наружу. В программе очень не хватает функции не показывать ребра между некоторыми гранями. Например, если грани одного цвета и между ними угол меньше эпсилона.
...

А может просто вернуться к началу и свернуть чуть в сторону?
Вот куб, мы его для удобства делим на две части.

Это как бы одна часть останется как есть, а на второй будет что-то изменено.
Я говорил, что лучшим разрезом будет тот, когад вписанная окружность будет касаться всех сторон фигуры разреза.
Поэтому надо просто отрезать лишнее (точнее масштабировать), пазл как бы попилить чуть сверху и снизу, пока в плоскости разреза не получится квадрат.
При построении новой стороны вообще получится "окта"-половинка, что Вы и писали уже.

Возможно с этой фигурой получше будет уже, не будет возможно "висячих" элементов?
Спасибо, удачи.

P.S. Новая фигура теперь больше напоминает молоток.  ;D
« Последнее редактирование: 27 июля 2023, 09:47:43 от myth »

Оффлайн T4r4sB

  • Постоялец
  • ***
  • Сообщений: 211
Re: Идея семи-осника
« Ответ #31 : 27 июля 2023, 10:02:30 »
Нет, это описание векторов для осей.
Тем более, что что есть и другие пазлы с такими характеристиками.
Это всё скьюбообразные
Цитировать
Вектор определяется по трём координатам, но автор pCubes посчитал, что при декларировании вектора не обязательно привязываться к каким-то размерам, поэтому пара строк описывают один вектор:
1) <Axis NormVector = "-1;-1;-1" />
2) <Axis NormVector = "-13;-13;-13" />
Это называется нормализация вектора.
Цитировать
Здесь каждую строку, для наглядности, поделить на "корень из трёх и делить на 3", то получится:

Но это те же строки, они работают в симуляторе одинаково.
С седьмой осью не прокатит, придётся вводить как есть, если и упрощать, то разве что до чего-то типа
sqrt(5) +- 1
« Последнее редактирование: 27 июля 2023, 10:04:50 от T4r4sB »

Оффлайн myth

  • Постоялец
  • ***
  • Сообщений: 107
  • Пол: Мужской
  • ---я вернулся?---
Re: Идея семи-осника
« Ответ #32 : 27 июля 2023, 14:40:11 »
Нет, это описание векторов для осей.
Тем более, что что есть и другие пазлы с такими характеристиками.
Это всё скьюбообразные

Это только один из подклассов пазлов с такими же разрезами. Есть например Pyraminx, у него похожее также вектора, но он не относится к скьюбам?

P.S. Я кидал отдельно шаблон формы пазла, а отдельно скрипт, но это не значит что в скрипте пробовал "правильно" нарезать на слои. Это сделано только для визаулизации, посмотреть со всех сторон, а только потом посмотреть, если захочется повороты по осям. Вы наверное будете семиосник в разных скриптах использовать, может использовать шаблон, а из скрипта уже вызывать. Также в любой момент можно переключиться на другой шаблон, посмотреть как будет к примеру на кубической форме.

P.P.S. У меня сегодня мозг вскипел, не мог понять что за тело рисует, а оказалась банальная опечатка, вместо Sqrt написал Sqr...
Видимо у pCubes свой парсер для кода xml, который выбирает "правильный" код и пропускает ошибки.
« Последнее редактирование: 27 июля 2023, 15:03:19 от myth »

Оффлайн grigr

  • Глобальный модератор
  • *****
  • Сообщений: 5 259
  • Пол: Мужской
  • кручу-верчу
    • Мой Магазин
Re: Идея семи-осника
« Ответ #33 : 27 июля 2023, 21:12:08 »

вообще-то там более менее полноценный скриптовый язык программирования. все есть!
операции над векторами реализованы на самом языке. есть в других скриптах.
Я посмотрел как закодированы разные паззлы, не увидел ни одного, где было бы применение скалярного или векторного произведения, например. Такие есть?
Борис обычно пользовательские пазлы потом под перерабатывает. у него свой стандарт...

советую посмотреть мои старые скрипты, в тот период когда активно их пилил. вот там все процедуры скорей всего есть

Оффлайн grigr

  • Глобальный модератор
  • *****
  • Сообщений: 5 259
  • Пол: Мужской
  • кручу-верчу
    • Мой Магазин
Re: Идея семи-осника
« Ответ #34 : 27 июля 2023, 21:17:53 »
вот например один из старых скриптов. проверил, сейчас работает все...

могу еще чтото прислать. для изучения

<?xml version = "1.0" encoding = "windows-1251"?>
<xml Data_Version = "2" >

    <Interface>
        <Name>Propello Cube</Name>
        <Class>TJumble</Class>
        <Menu>Grigr\Propello Cube</Menu>
        <Inventor></Inventor>
        <Programmer>Evgeniy Grigoriev</Programmer>
        <Added>2019-01-25</Added>
        <Link>http://dmccooey.com/polyhedra/PropelloCube.html</Link>
    </Interface>

    <Script>
        clWhite        := 'F0F0F0';    clYellow       := 'FFFF00';
        clGainsboro    := 'C0C0C0';    clOrange       := 'FF6000';
        clSilver       := 'A0A0A0';    clKhaki        := 'F0E68C';
        clGray         := '707070';    clGolden       := 'DDBB20';
        clBlack        := '202020';    clOlive        := '808000';
                                                                 
        clCyan         := '00FFFF';    clGreenYellow  := 'ADFF2F';     
        clDeepSky      := '00BFFF';    clLime         := '00FF00';     
        clTeal         := '008080';   
        clBlue         := '0000FF';    clGreen        := '008000';     
        clNavy         := '000080';    clDarkGreen    := '006400';     
                                                                 
        clCoral        := 'FF7F50';    clPink         := 'FF69B4';
        clRed          := 'FF0000';    clFuchsia      := 'FF00FF';
        clCrimson      := 'DC143C';    clPale         := 'D07090';
        clIndian       := 'CD5C5C';    clOrchid       := 'DA70D6';
        clBrown        := '800000';    clPurple       := '800080';

        clSeaGreen     := '2E8B57';    clIndigo       := '4B0082';
        clAquaMarine   := '66CDAA';    clDarkSlate    := '483D8B';
        clDarkSeaGreen := '8FBC8F';    clSlate        := '6A5ACD';

        K  := 0.5;     

// Propello Cube (canonical)

        C0 := 0.169629045867;
        C1 := 0.481689876410;
        C2 := 0.587800511503;
        C3 := 0.932523685962;

        // Calcs normal to plane with 3 points. Answer - in vector nx, ny, nz
        procedure Normal(x1, y1, z1, x2, y2, z2, x3, y3, z3, i);
        begin
          nx := (y1-y3) * (z2-z3) - (y2-y3) * (z1-z3);
          ny := (z1-z3) * (x2-x3) - (z2-z3) * (x1-x3);
          nz := (x1-x3) * (y2-y3) - (x2-x3) * (y1-y3);

          // normalize vector
          dn := sqrt(nx^2 + ny^2 + nz^2);
          nx := nx / dn; ny := ny / dn; nz := nz / dn;
          px[i] := nx; py[i] := ny; pz[i] := nz;

          // distace to plane
          L := x1*nx + y1*ny + z1* nz;
        end;   

        // Calcs angle from 2 to 3 while rotating over 1
        function Angle(ver1, ver2, ver3);
        begin
          vx := py[ver1] * pz[ver2] - py[ver2] * pz[ver1];
          vy := pz[ver1] * px[ver2] - pz[ver2] * px[ver1];
          vz := px[ver1] * py[ver2] - px[ver2] * py[ver1];
          wx := py[ver1] * pz[ver3] - py[ver3] * pz[ver1];
          wy := pz[ver1] * px[ver3] - pz[ver3] * px[ver1];
          wz := px[ver1] * py[ver3] - px[ver3] * py[ver1];
          Result := ArcCos((vx*wx + vy*wy + vz*wz) / (vx^2 + vy^2 + vz^2));
        end;

        // Calc all Normal and fill array
        Normal(  C1, C0, C3,  C3,-C0, C1,  C3, C1, C0, 0); // "0, 16,  4"
        Normal(  C3, C1, C0,  C1, C3,-C0,  C0, C3, C1, 1); // "4, 21,  8"
        Normal(  C0, C3, C1, -C0, C1, C3,  C1, C0, C3, 2); // "8, 14,  0"
        Normal(  C0, C1,-C3, -C0, C3,-C1,  C1, C3,-C0, 3); // "13; 11; 21"
        Normal(  C1, C3,-C0,  C3, C1, C0,  C3, C0,-C1, 4); // "21;  4; 17"
        Normal(  C3, C0,-C1,  C1,-C0,-C3,  C0, C1,-C3, 5); // "17;  1; 13"
        Normal(  C0,-C1, C3, -C0,-C3, C1,  C1,-C3, C0, 6); // "12; 10; 20"
        Normal(  C1,-C3, C0,  C3,-C1,-C0,  C3,-C0, C1, 7); // "20;  5; 16"
        Normal(  C3,-C0, C1,  C1, C0, C3,  C0,-C1, C3, 8); // "16;  0; 12"
        Normal(  C1,-C0,-C3,  C3, C0,-C1,  C3,-C1,-C0, 9); // " 1; 17;  5"
        Normal(  C3,-C1,-C0,  C1,-C3, C0,  C0,-C3,-C1,10); // " 5; 20;  9"
        Normal(  C0,-C3,-C1, -C0,-C1,-C3,  C1,-C0,-C3,11); // " 9; 15;  1"
        Normal( -C0, C1, C3,  C0, C3, C1, -C1, C3, C0,12); // "14;  8; 22"
        Normal( -C1, C3, C0, -C3, C1,-C0, -C3, C0, C1,13); // "22;  7; 18"
        Normal( -C3, C0, C1, -C1,-C0, C3, -C0, C1, C3,14); // "18;  2; 14"
        Normal( -C1, C0,-C3, -C3,-C0,-C1, -C3, C1,-C0,15); // " 3; 19;  7"
        Normal( -C3, C1,-C0, -C1, C3, C0, -C0, C3,-C1,16); // " 7; 22; 11"
        Normal( -C0, C3,-C1,  C0, C1,-C3, -C1, C0,-C3,17); // "11; 13;  3"
        Normal( -C1,-C0, C3, -C3, C0, C1, -C3,-C1, C0,18); // " 2; 18;  6"
        Normal( -C3,-C1, C0, -C1,-C3,-C0, -C0,-C3, C1,19); // " 6; 23; 10"
        Normal( -C0,-C3, C1,  C0,-C1, C3, -C1,-C0, C3,20); // "10; 12;  2"
        Normal( -C0,-C1,-C3,  C0,-C3,-C1, -C1,-C3,-C0,21); // "15;  9; 23"
        Normal( -C1,-C3,-C0, -C3,-C1, C0, -C3,-C0,-C1,22); // "23;  6; 19"
        Normal( -C3,-C0,-C1, -C1, C0,-C3, -C0,-C1,-C3,23); // "19;  3; 15"

        px[24]:=1; py[24]:=0; pz[24]:=0; // blu
        px[25]:=0; py[25]:=1; pz[25]:=0; // oran
        px[26]:=0; py[26]:=0; pz[26]:=1; // white

        // Calc all Jumble Angle
        A1 := Angle(1, 0, 2);
        A2 := Angle(1, 0, 4);
        A3 := Angle(1, 2, 4);
        A4 := Angle(1, 3, 12);

        D1 := K * 1.595;
        D2 := K * 1.65;
    </Script>                                             

    <Axes TurningAngles = "2*Pi" AvailableAngles = " -A4;-A3;-A2;-A1; 0; A1;A2;A3;A4" PlaneDistances = "D2"  FixedLayers = "0">
        <Axis NormVector = " px[0]; py[0]; pz[0]" />
        <Axis NormVector = " px[1]; py[1]; pz[1]" />
        <Axis NormVector = " px[2]; py[2]; pz[2]" />
        <Axis NormVector = " px[3]; py[3]; pz[3]" />
        <Axis NormVector = " px[4]; py[4]; pz[4]" />
        <Axis NormVector = " px[5]; py[5]; pz[5]" />
        <Axis NormVector = " px[6]; py[6]; pz[6]" />
        <Axis NormVector = " px[7]; py[7]; pz[7]" />
        <Axis NormVector = " px[8]; py[8]; pz[8]" />
        <Axis NormVector = " px[9]; py[9]; pz[9]" /> 
        <Axis NormVector = " px[10]; py[10]; pz[10]" />
        <Axis NormVector = " px[11]; py[11]; pz[11]" />
        <Axis NormVector = " px[12]; py[12]; pz[12]" />
        <Axis NormVector = " px[13]; py[13]; pz[13]" />
        <Axis NormVector = " px[14]; py[14]; pz[14]" />
        <Axis NormVector = " px[15]; py[15]; pz[15]" />
        <Axis NormVector = " px[16]; py[16]; pz[16]" />
        <Axis NormVector = " px[17]; py[17]; pz[17]" />
        <Axis NormVector = " px[18]; py[18]; pz[18]" />
        <Axis NormVector = " px[19]; py[19]; pz[19]" /> 
        <Axis NormVector = " px[20]; py[20]; pz[20]" />
        <Axis NormVector = " px[21]; py[21]; pz[21]" />
        <Axis NormVector = " px[22]; py[22]; pz[22]" />
        <Axis NormVector = " px[23]; py[23]; pz[23]" /> 
    </Axes>
    <Axes TurningAngles = "Pi/2" PlaneDistances = "-D1;D1" FixedLayers = "1">
        <Axis NormVector = " 1;0;0" />
        <Axis NormVector = " 0;1;0" />
        <Axis NormVector = " 0;0;1" />
    </Axes>

    <Figure>
        <Part>
            <Vertices>
                <Add Vector = " C1;  C0;  C3" />  //   0
                <Add Vector = " C1; -C0; -C3" />  //   1
                <Add Vector = "-C1; -C0;  C3" />  //   2
                <Add Vector = "-C1;  C0; -C3" />  //   3
                <Add Vector = " C3;  C1;  C0" />  //   4
                <Add Vector = " C3; -C1; -C0" />  //   5
                <Add Vector = "-C3; -C1;  C0" />  //   6
                <Add Vector = "-C3;  C1; -C0" />  //   7
                <Add Vector = " C0;  C3;  C1" />  //   8
                <Add Vector = " C0; -C3; -C1" />  //   9
                <Add Vector = "-C0; -C3;  C1" />  //   10
                <Add Vector = "-C0;  C3; -C1" />  //   11
                <Add Vector = " C0; -C1;  C3" />  //   12
                <Add Vector = " C0;  C1; -C3" />  //   13
                <Add Vector = "-C0;  C1;  C3" />  //   14
                <Add Vector = "-C0; -C1; -C3" />  //   15
                <Add Vector = " C3; -C0;  C1" />  //   16
                <Add Vector = " C3;  C0; -C1" />  //   17
                <Add Vector = "-C3;  C0;  C1" />  //   18
                <Add Vector = "-C3; -C0; -C1" />  //   19
                <Add Vector = " C1; -C3;  C0" />  //   20
                <Add Vector = " C1;  C3; -C0" />  //   21
                <Add Vector = "-C1;  C3;  C0" />  //   22
                <Add Vector = "-C1; -C3; -C0" />  //   23
                <Add Vector = " C2;  C2;  C2" />  //   24
                <Add Vector = " C2;  C2; -C2" />  //   25
                <Add Vector = " C2; -C2;  C2" />  //   26
                <Add Vector = " C2; -C2; -C2" />  //   27
                <Add Vector = "-C2;  C2;  C2" />  //   28
                <Add Vector = "-C2;  C2; -C2" />  //   29
                <Add Vector = "-C2; -C2;  C2" />  //   30
                <Add Vector = "-C2; -C2; -C2" />  //   31
            </Vertices>                                   

            <Faces>
                <Face Color = "clWhite " VertexIndexes = "  2; 12;  0; 14 " />
                <Face Color = "clYellow" VertexIndexes = "  3; 13;  1; 15 " />
                <Face Color = "clBlue  " VertexIndexes = "  4; 16;  5; 17 " />
                <Face Color = "clGreen " VertexIndexes = "  7; 19;  6; 18 " />
                <Face Color = "clOrange" VertexIndexes = "  8; 21; 11; 22 " />
                <Face Color = "clRed   " VertexIndexes = "  9; 20; 10; 23 " />

                <Face Color = "clPink   " VertexIndexes = " 24;  0; 16;  4 " />
                <Face Color = "clPurple " VertexIndexes = " 24;  4; 21;  8 " />         1
                <Face Color = "clFuchsia" VertexIndexes = " 24;  8; 14;  0 " />
                <Face Color = "clSeaGreen    " VertexIndexes = " 25; 13; 11; 21 " />    3+           
                <Face Color = "clDarkSeaGreen  " VertexIndexes = " 25; 21;  4; 17 " />  4             
                <Face Color = "clAquaMarine" VertexIndexes = " 25; 17;  1; 13 " />               
                <Face Color = "clGreenYellow" VertexIndexes = " 26; 12; 10; 20 " />
                <Face Color = "clLime       " VertexIndexes = " 26; 20;  5; 16 " />
                <Face Color = "clDarkGreen  " VertexIndexes = " 26; 16;  0; 12 " />
                <Face Color = "clIndigo   " VertexIndexes = " 27;  1; 17;  5 " />
                <Face Color = "clDarkSlate" VertexIndexes = " 27;  5; 20;  9 " />
                <Face Color = "clSlate    " VertexIndexes = " 27;  9; 15;  1 " />
                <Face Color = "clCrimson  " VertexIndexes = " 28; 14;  8; 22 " />       12+
                <Face Color = "clCoral" VertexIndexes = " 28; 22;  7; 18 " />
                <Face Color = "clIndian " VertexIndexes = " 28; 18;  2; 14 " />
                <Face Color = "clCyan   " VertexIndexes = " 29;  3; 19;  7 " />
                <Face Color = "clDeepSky" VertexIndexes = " 29;  7; 22; 11 " />
                <Face Color = "clTeal   " VertexIndexes = " 29; 11; 13;  3 " />
                <Face Color = "clKhaki" VertexIndexes = " 30;  2; 18;  6 " />
                <Face Color = "clGolden" VertexIndexes = " 30;  6; 23; 10 " />
                <Face Color = "clOlive" VertexIndexes = " 30; 10; 12;  2 " />
                <Face Color = "clPale" VertexIndexes = " 31; 15;  9; 23 " />
                <Face Color = "clOrchid" VertexIndexes = " 31; 23;  6; 19 " />
                <Face Color = "clBrown" VertexIndexes = " 31; 19;  3; 15 " />
            </Faces>
        </Part>

        <SplitByAxes/>
    </Figure>
</xml>

Оффлайн T4r4sB

  • Постоялец
  • ***
  • Сообщений: 211
Re: Идея семи-осника
« Ответ #35 : 27 июля 2023, 21:48:31 »
вот например один из старых скриптов. проверил, сейчас работает все...

        procedure Normal(x1, y1, z1, x2, y2, z2, x3, y3, z3, i);
Спасибо, теперь я знаю как делать подпрограммы! И тут уже на этом примере видно, что остро не хватает типа "вектор". В векторном виде это было бы
function Normal(v1, v2, v3);
begin
  result := normalize(cross(v2 - v1, v3 - v1));
// или  return normalize(cross(v2 - v1, v3 - v1));
end;

А ещё видно, что если результат - не одно число, а тройка чисел, то вместо функции приходится... передавать индекс в качества адреса возвращаемого результата - это тоже ограничение скрипта. Хотя остроумно, я б не додумался до такого хака.

Тем временем я понял, как не обводить все рёбра. Но увы, тут требуется честно задать все координаты и  грани. Короче я понял, что внешним генератором оно проще всего как-то. Получилась "подушечка" на 2 тыщи строк кода

https://disk.yandex.ru/d/f1pzkP8BDISoOw

А теперь задачка: надо разрезать красно-синее ребро симметричным разрезом, но так, чтоб никакой другой элемент не был разрезан:

Вот это положение кажется подходящим, но нет, поворачиваем иначе и видим как уголочек попадает под разрез:


« Последнее редактирование: 27 июля 2023, 22:03:07 от T4r4sB »

Оффлайн T4r4sB

  • Постоялец
  • ***
  • Сообщений: 211
Re: Идея семи-осника
« Ответ #36 : 27 июля 2023, 22:00:29 »
Это только один из подклассов пазлов с такими же разрезами. Есть например Pyraminx, у него похожее также вектора, но он не относится к скьюбам?
А какой пираминкс? Если молдавская пирамидка в первозданном виде - то это не скьюб, она намного проще. Но стоит добавить центры граней и добавить им ориентацию - и получается шейпмод скьюба. Оно всё очень близко.

Цитировать
А может просто вернуться к началу и свернуть чуть в сторону?
И сделать вращающиеся вершины? Ну тут снова нужна "подушка". Без неё не получится "квадратиков" в центрах граней, как в супер-иви. Вариант завести разрез за соседний центр вращения - не то, хочется чтоб соседний центр был виден.

Оффлайн grigr

  • Глобальный модератор
  • *****
  • Сообщений: 5 259
  • Пол: Мужской
  • кручу-верчу
    • Мой Магазин
Re: Идея семи-осника
« Ответ #37 : 28 июля 2023, 00:47:44 »
ну Подушки все и Сферы как раз делались во внешних программах.
а Борис потом шаблоны сделал для этих форм... собственно до этого я как-то и догадался, сделав первую сферу

Оффлайн myth

  • Постоялец
  • ***
  • Сообщений: 107
  • Пол: Мужской
  • ---я вернулся?---
Re: Идея семи-осника
« Ответ #38 : 28 июля 2023, 10:59:13 »
А ещё есть шаблон со всякими цветами:
"Figures\Colors.xml"

Не хватает только на русском языке перевода.
И тут подсказка, если что-то пишите в скрипте на русском, то надо кодовую страницу xml сделать UTF-8

-upd-
Работаю в FAR Manager, тут и кодовую страницу легко сменить:
- выделяем все и вырезаем
- нажимаем Shift+F8 и в меню выбираем строку с "UTF-8"
- возвращаем код из буфера обмена назад, в редактор
- не забываем сохранить это  изменение

FAR также имеет неплохой встроенный редактор, он с поддержкой также XML, мне достаточно.

Например. Делаю изменение скрипта, по F2 сохраняю, затем Alt+Tab переключаюсь на pCubes и нажимаю F2, обновляя-применяя изменение.
Также делаю построчную отладку. Перед тегом "</Figure>" добавляю "-->". А в коде ставлю на нужной строке "<!--".
Смотрю что pCubes. Перемещаю ниже "<!--", смотрю что в pCubes.
И так далее, но без фанатизма и излишеств.  ;D

О, чуть не забыл. Делаю поэтапно Alt+PrtSc и вставляю в ВК в новое сообщение чата. Так получается куча картинок, их публикую. А затем у картинок есть временный url, на них могу ссылаться, например здесь вставить. А временный, потому что через какое-то время url изменится, в соцсетях так работает.

P.S. В качестве рекламы.
Моя группа в ВК - vk.com/club211037066
Мой чат в этой группе - vk.com/im?sel=c7
Но я начинающий, поэтому не всё что пишу верно или правильно. Начал наполнять записями недавно, готов к общению по теме головоломок.

Лучшая группа в ВК по пазлам - https://vk.com/twistypuzzles
Была группа в ВК, по кубикам в том числе - https://vk.com/progresscubezelenograd , но автор реже стал на эту тему что-то публиковать. Но у него есть чат, если посмотреть всю историю, то были достойные темы.
« Последнее редактирование: 28 июля 2023, 12:00:50 от myth »

Оффлайн myth

  • Постоялец
  • ***
  • Сообщений: 107
  • Пол: Мужской
  • ---я вернулся?---
Re: Идея семи-осника
« Ответ #39 : 28 июля 2023, 11:09:45 »
А теперь задачка: надо разрезать красно-синее ребро симметричным разрезом, но так, чтоб никакой другой элемент не был разрезан.
Не сложно, надо скрыть все элементы, которые могут попасть под разрез. Ниже разные команды, могут пригодиться:
<Hide  Axis = "1" From = "3" To = "3" /> /// тут скрываем слой
<Turn  Axis = "1" Layers = "0;1;2" Angle = " Pi/2" /> /// это вариант поворота, несколько слоёв
<Split Axis = "2" From = "1" /> /// разрез
<Undo  Repeat = "1"/> /// отмена поворота
....
<RemoveAllVisible/> /// удалить всё видимое
<InvertVisibility/>  /// скрытое отобразить, а видимое скрыть
<RemoveGrayParts/> /// удалить всё не окрашенное
<ShowAll/>  /// а это отобразить все элементы


P.S. Ещё одна "фишка" есть. При скрытии слоёв помогала. Если есть "длинный" блок, например в 2 элемента, то если указать, что хотим скрыть слои от начала и до середины блока, всё будет скрыто, кроме блока этого.
« Последнее редактирование: 28 июля 2023, 11:16:00 от myth »

Оффлайн myth

  • Постоялец
  • ***
  • Сообщений: 107
  • Пол: Мужской
  • ---я вернулся?---
Re: Идея семи-осника
« Ответ #40 : 28 июля 2023, 11:21:45 »
ну Подушки все и Сферы как раз делались во внешних программах.
а Борис потом шаблоны сделал для этих форм... собственно до этого я как-то и догадался, сделав первую сферу

Вчера как раз изучал цилиндры и сферы, ужас.  ;D
Не смог найти в шаблонах их "заготовки", а оказалось что это макросы, рядом со скриптами лежат.

Оффлайн myth

  • Постоялец
  • ***
  • Сообщений: 107
  • Пол: Мужской
  • ---я вернулся?---
Re: Идея семи-осника
« Ответ #41 : 28 июля 2023, 11:27:53 »
Это только один из подклассов пазлов с такими же разрезами. Есть например Pyraminx, у него похожее также вектора, но он не относится к скьюбам?
А какой пираминкс? Если молдавская пирамидка в первозданном виде - то это не скьюб, она намного проще. Но стоит добавить центры граней и добавить им ориентацию - и получается шейпмод скьюба. Оно всё очень близко.
Вы как и я умеете, уводите разговор в сторону.  ;D
Тема была, что не если векторы одинаковы, то не значит ещё это что определённый "механизм".
Пазлы вообще невозможно классифицировать однозначно. Так сложилось.  :)

Цитировать
Цитировать
А может просто вернуться к началу и свернуть чуть в сторону?
И сделать вращающиеся вершины? Ну тут снова нужна "подушка". Без неё не получится "квадратиков" в центрах граней, как в супер-иви. Вариант завести разрез за соседний центр вращения - не то, хочется чтоб соседний центр был виден.
Ваше первое техзадание было про вращающиеся углы, поэтому в шаблоне оставил только углы, не делал рёбра и центры. Думал не заметите.  ;D

Оффлайн myth

  • Постоялец
  • ***
  • Сообщений: 107
  • Пол: Мужской
  • ---я вернулся?---
Re: Идея семи-осника
« Ответ #42 : 28 июля 2023, 12:23:45 »
ну Подушки все и Сферы как раз делались во внешних программах.
а Борис потом шаблоны сделал для этих форм... собственно до этого я как-то и догадался, сделав первую сферу
Наверное сложнее Сферы будет только Торроид?
Не помню, есть ли что-то в симуляторе.

P.S. Есть сложнее - это "лента мебиуса", но народ не делает с ней головоломки что-то.
А можно было бы и придумать.
Например шарики по середине ленты (с числами например они), лента в виде треугольника и распилена на 3 части, ну чтоб "углы" можно вращать на 180.

Ну точно это не для pCubes, потеря времени и ресурсов.  ;D

Оффлайн grigr

  • Глобальный модератор
  • *****
  • Сообщений: 5 259
  • Пол: Мужской
  • кручу-верчу
    • Мой Магазин
Re: Идея семи-осника
« Ответ #43 : 28 июля 2023, 14:40:55 »
проблема в том что Тороид сделать не трудно. просто пКуб головоломки с разными центрами осей очень ограниченно поддерживает.

пс
ФАР с детства знаю )))

Оффлайн myth

  • Постоялец
  • ***
  • Сообщений: 107
  • Пол: Мужской
  • ---я вернулся?---
Re: Идея семи-осника
« Ответ #44 : 28 июля 2023, 16:05:32 »
проблема в том что Тороид сделать не трудно. просто пКуб головоломки с разными центрами осей очень ограниченно поддерживает.

Извиняюсь, тормоз, есть как бы похожее, просто тор не видимый можно считать. Ну всё равно не нужны эти сегментики, между крутящимися по кругу слоями которые будут.
Пазл похожий, уже не один даже, есть к в симуляторе, например с 4 кубиками 2х2х2, половинками меняются по окружности.
Надо только их приблизить эти кубики, добавить ещё штуки 4 не забыть, вот и имитация тора.  ;D

Ходила STL с таким пазлом по просторам Инета, 8 или 6 "цилиндров" на торе (бублике) было, "слоёв" не помню сколько было на цилиндре.
« Последнее редактирование: 28 июля 2023, 16:09:48 от myth »