Paste #125507: truncated tetrahedron

Date: 2024/08/11 18:52:07 UTC-07:00
Type: Denizen Script

View Raw Paste Download This Paste
Copy Link


truncated_tetrahedron:
    type: procedure
    definitions: center|scale[Multiplies the square's total size.]|density[Distance between each point.]
    debug: false
    script:
    - define 000 <location[0,0,0].with_pose[0,0].with_world[<[center].world>]>

    - define hexagon:->:<[000].forward[1.00000084].with_yaw[120]>
    - repeat 5:
        - if <[value].mod[2]> == 1:
            - define forward 1.00000168
        - else:
            - define forward 1
        - define hexagon:->:<[hexagon].last.forward[<[forward]>].with_yaw[<[hexagon].last.yaw.add[60]>]>

    - foreach <[hexagon]> as:current_point:
        - define next_point <[hexagon].get[<[loop_index].add[1]>].if_null[<[hexagon].first>]>
        - define face0:|:<[current_point].points_between[<[next_point]>].distance[<[density]>]>

    # .proc[rotate_list_around_xyz]
    - define face1 <[face0]>
    - define centroid <location[<[face1].parse[x].average>,<[face1].parse[y].average>,<[face1].parse[z].average>,<[face1].first.world>]>
    - define face1 <[face1].parse[sub[<[centroid]>]]>
    - define face1 <[face1].parse[rotate_around_z[<element[70.52877937].to_radians>].add[-0.57735092,0.81649750,0]]>
    - define face1 <[face1].parse[add[<[centroid]>]]>

    - define face2 <[face1].parse[rotate_around_y[<element[120].to_radians>]]>
    - define face3 <[face2].parse[rotate_around_y[<element[120].to_radians>]]>

    - define truncated_tetrahedron <list[<[face0]>|<[face1]>|<[face2]>|<[face3]>].combine>

    - determine <[truncated_tetrahedron].parse[mul[<[scale]>].add[<[center]>]]>

truncated_tetrahedron_test_task:
    type: task
    debug: false
    script:
    - define loc <player.location>
    - define truncated_tetrahedron <[loc].proc[truncated_tetrahedron].context[6|0.05]>
    - repeat 10:
        - playeffect effect:redstone quantity:1 offset:0 visibility:999 at:<[truncated_tetrahedron]> special_data:1|<&b>
        - wait 10t