【命令】常见几何的命令画法汇总
本帖最后由 惯宣-CGX_ 于 2023-12-8 02:40 编辑常见几何的命令画法汇总
『定义』
【点】
1、点:点是不可再分割,体积为1的方块。
【线】
2、线:线是宽度最小为1的长度。
3、线的两端是点。
4、直线:直线是任意两点连接起来的最短的线。
5、曲线:曲线是具有曲率的线。
【面】
6、面:面具有1以上的宽度和长度。
7、面的边是线。
8、平面:平面是任意两直线连接起来长度最短的面。
9、圆:圆被圆周包围,且由圆心到圆周的距离相等。
10、椭圆:椭圆是圆的拉抻。椭圆中离圆心最远端和最近端的距离之和等于拉伸前圆的直径。
【体】
11、立体:立体具有宽度、长度和高度。
12、立体的边界是面。
13、圆柱:圆柱是具有高度的圆。
14、球体:球体具有球心。
『公设』
1、任何复杂的图形都由更基础的图形削减或增补而来。
2、使用execute可以在任意实体处执行命令。因而实体@e可以确定非绝对值的坐标。下文也称作锚点。
3、一条有限直线可以继续延长。
4、两个平面相交,互相接触的部分是一条直线。
5、以任意点为圆心,任意长为半径,可以画圆。
6、使用fill可以填充方体。
7、使用clone或结构方块可以复制特定区域的方块。
8、使用tp可以移动实体位置,受重力和方向影响。
9、下落的方块(falling_block),下文也称作落沙,可以被@e选择。
10、使用船作为execute的执行实体可以得到更多的方向,而使用盔甲架得到的方向则更为稳定。盔甲架没有垂直朝向,但是小心基岩版的船会遁地。
『公理』
1、本文使用符号表达命令方块设置:
https://img-data.klpbbs.com:11179/forum/202306/09/193025f9jwpb8seqjc8roe.jpg
2、命题中所出现的逻辑已全部写入【定义】和【公设】。
3、拔高题指未完成的假设或存在一些问题的方法。
4、本文所载之方法皆建立在各位读者已熟识execute、fill、clone、tp等命令和结构方块用法的基础上论述。
5、本文不会列出过于复杂,难以在各地图的施工现场使用的方法。纯粹的艺术画图请绕道。
6、本文所载之方法皆非一人一时所作,笔者只是稍加收集整理分类,以方便各位制图所需。
命题一到命题四
【命题一 - 替换方块】
在任意位置替换方块。
设实体A的位置为锚点(公设2),使用fill填充区域内方块。
可以在任意位置替换方块。
execute as @e at @s run fill ~~-1~ ~~-1~ stone
同理可知,使用tp或spreadplayers可以替换区域内随机或特定位置的方块。
【命题二 - 延长线】
求在点上做延长线。
已知某位置存在一个方块。
在该方块位置设实体A为锚点a,设线段延长结束位置为点b(定义3)。
使用tp移动实体A到点b,并同时使用clone复制对应反方向坐标的方块到自己位置,按实体A的移动路径作直线ab(定义4)。
以向上为例:
8 /execute as @e at @s run clone ~~-1~ ~~-1~ ~~~
v /execute as @e at @s run tp @s ~~1~
同理可知,点B可以使用实体B作为锚点。
假设实体A在由点A到点B的移动中,使用了clone复制方块。
则会因为tp的不稳定性导致clone无法正常复制相对位置的方块(公设8)。
所以更为常用的做法是使用fill画线而非clone。
另设点B为目标位置,检测实体A是否存在于该位置。或设记分板倒数指定计分(公理4)。
可以在实体A画完直线AB后停止并自动kill自身。
【命题二拔高 - 曲线】
已知作一条贝塞尔曲线必须计算线段上所有位置的百分比。
所以不可能绕过记分板的计算,做出绘制贝塞尔曲线的命令组。
而使用记分板的计算过于复杂,不适宜在各地图的施工现场使用。
所以只能寻求替代办法(公理5)。
- 直线:
已知一条曲线可以由多条直线拼接而来。
设实体A的位置为曲线终点、设实体B的位置为曲线起点,设实体C在曲线起点。
使用tp以相同速度移动实体B到实体A、移动实体C到实体B后一定位置。并同时让实体C执行fill作曲线ab。
另设曲线终点为目标位置,检测实体B是否存在于该位置。
可以在实体B画完曲线ab后kill实体A,并设实体A1为新的曲线终点,作新的曲线a1a,构成大的线段a1b。
这种情况下作出的曲线仅是圆滑了边角,不是完全意义上的曲线。
- 叠加向量:
设实体A的位置为曲线终点,设实体B的位置为曲线起点,设实体C在任意位置。
使用tp调整实体C的方向,使之朝向实体B,并向后移动。
使用tp调整实体C的方向,使之朝向实体A,并向前移动。
如此重复,作曲线ab。
这种情况下作出的曲线取决于实体C相对于实体A、实体B的位置所能叠加的向量。
因为公设8,校准方向并移动需要两条tp命令。
- 线段比:
设实体A的位置为曲线终点,设实体B的位置为曲线起点,设实体C在任意位置。
使用tp以相同速度移动实体B到实体C、移动实体C到实体A。并同时让实体B执行fill作曲线ab。
这种情况下作出的曲线取决于ac和ab之比。
【命题三 - 线斜面】
按平面坐标系方向作任意斜率斜面。
设实体A的位置为锚点a,设斜面不相邻端某处为点b。
使用tp移动实体A到点b,并同时使用fill填充该平面的宽度(定义6),按实体A的移动路径作平面ab。
以斜率水平向上45°、宽度10为例:
8 /execute as @e at @s run tp @s ^ ^1 ^1
v /execute as @e at @s run fill ^5 ^ ^ ^-5 ^-1 ^ stone
同理可知,点B可以使用实体B作为锚点。
假设实体A在由点a到点b的移动中,使用了实体B作为锚点。
则会因为fill只能填充方体而变成一片片扑克牌叠起来的形状。
所以更为常用的做法是使用clone复制特定区域的方块代替fill(命题九)。
【命题四 - 网斜面】
又,按空间直角坐标系作任意斜率斜面。
设实体A、实体B的位置为锚点a、锚点b,设实体C、实体D的位置为锚点c、锚点d。以锚点c、锚点d的位置为起点,锚点a、锚点b的位置为终点,作虚线ca、虚线db为该平面的不相邻边(定义8)。
实体A、实体B不动。使用tp沿虚线ca、虚线db校准实体C、实体D的方向,使之朝向实体A、实体B。
设实体E在实体C(或实体D)处,使用tp移动实体E到实体D(或实体C),并同时使用fill填充经过的路径,作直线cd为该平面的宽度。
使用tp缓慢移动实体C、实体D到锚点a、锚点b,并同时使用tp移动实体E,使用fill作直线cd1。
如此重复,直至实体C、实体D到达锚点a、锚点b,作斜面abcd。
以使用船充当实体为例(公设10):
8 /execute as @e at @s run tp @s ^^^1 facing @e
v /execute as @e at @s run fill ~1 ~1 ~1 ~-1 ~-1 ~-1 stone
v /execute as @e at @s run tp @e @e
v> /execute as @e at @s run tp @s ^^^1 facing @e
v> /execute as @e at @s run tp @s ^^^1 facing @e
因为公设8,使用tp确定方向会导致画出来的线与理想状态存在偏差。
使用如下命令可以进行一定程度的校准:
execute as @e at @s run tp @s ~ ~ ~
命题五到命题八
【命题五 - 螺旋】
作螺旋上升曲线
设实体A的位置为圆心o,设实体B在任意位置,以实体A到实体B的距离为半径,可以作圆(公设5)。
使用execute作为实体B执行tp环绕实体A,并缓慢上升,使用fill填充方块可作螺旋线ob。
以向内上升为例:
8 /execute as @e at @s run tp ^1 ^0.1 ^ facing @e
v /execute as @e at @s run fill ~ ~ ~ ~ ~ ~ stone
同理可知,使用fill朝向圆心填充,可以作圆锥。
【命题六 - 圆】
已知设实体A的位置为圆心o,使用tp改变实体A的朝向,使用execute让实体A执行fill在朝向的某处填充方块为点b,并以点b到圆心o的距离为半径可以作圆ob(公设5)。
以水平方向、半径10为例:
8 /execute as @e at @s run tp @s ~ ~ ~ ~1 ~
v /execute as @e at @s run fill ^ ^ ^10 ^ ^ ^10 stone
求任意平面作圆。
因为作规整的斜面圆必须用到垂直圆,过于复杂且难以控制方向,不适宜在各地图的施工现场使用。
所以寻求替代办法(公理5)。
设实体A的位置为圆心o,沿任意水平方向的直径设置盔甲架以决定该圆的斜率。
使用fill填充沙子在该区域上,使用execute作为盔甲架给经过相邻位置的落沙添加标签"a"。
使用execute作为实体A选择半径内具有标签"a"的落沙,执行fill填充,作圆o。
以朝x轴方向倾斜,半径5为例:
8 /execute as @e at @s run tag @e add a
v /execute as @e at @s as @e at @s run fill ~ ~ ~ ~ ~ ~ stone
v> /kill @e
v /execute as @e at @s run kill @e
【命题七 - 椭圆】
作平面椭圆。
设实体A的位置为圆心o,设实体B在任意位置,以实体A到实体B的距离为最远端(或最近端)。
使用tp校准实体A和实体B的方向,使实体A朝向实体B,使实体B背向实体A(或朝向实体A)。
使用tp改变实体A和实体B的朝向,以相同速度使实体A做正方向旋转且在朝向某处锁定实体B的位置,并同时使实体B做反方向选择。
使用execute让实体B执行fill在朝向的某处填充方块作椭圆o。
以实体A和实体B的距离为10、椭圆在实体B前距离3为例:
8 /execute as @e at @s run tp @e ^ ^ ^10
v> /execute as @e at @s run tp @s ~ ~ ~ ~-1 ~
v> /execute as @e at @s run tp @s ~ ~ ~ ~1 ~
v /execute as @e at @s run fill ^ ^ ^3 ^ ^ ^3 stone
已知圆柱上的任意斜向切面均为椭圆,求作斜面椭圆。
设实体A的位置为圆心o,设实体B在任意位置,设实体C在圆心o。以任意距离为半径,作圆o。
使用tp改变实体A的朝向,使之缓慢旋转且在朝向某处锁定实体B的位置。
使用tp改变实体A的高度,以与旋转速度相等比例的速度缓慢上升。并同时使用execute让实体B执行fill填充方块。
直至实体B到达斜面椭圆的最高点,使用execute让实体C执行tag给予实体A标签"a",使用tp使之缓慢下降。
直至返回最低点,作斜面椭圆o。
以圆柱半径10,斜率45°即高度10,实体使用盔甲架(公设10)为例:
8 /execute as @e at @s run tp @e ^^^10
v> /execute as @e at @s run tp @s ~ ~ ~ ~1.8 ~
v> /execute as @e at @s run tp @s ~ ~1 ~
v /execute as @e at @s run tp @s ~ ~-1 ~
v /execute as @e at @s run setblock ~ ~ ~ stone
v /execute as @e at @s run tag @e add a
v /execute as @e at @s run tag @e remove a
同理可知,将圆柱换为椭圆,可以作任意大小斜面椭圆。
【命题八 - 球】
已知落沙可以使用目标选择器选择,求作球。
设任意位置为球心o(定义14),使用execute作为落沙执行setblock填充方块,作球o。
以作半径10的空心玻璃球为例:
execute as @e at @s run setblock ~ ~1 ~ glass
变成方块的沙子可以使用fill的replace模式清除:
fill ~ ~ ~ ~ ~ ~ air [] replace sand
【命题八拔高 - 曲面】
已知根据命题三可以作特定方向的平面、根据命题四可以作任意方向的斜面、根据命题八可以作球、根据命题九可以作不规则多面体。
已知根据定义8、定义12、公设4和公设1,可以将一个曲面看作由多个平面组成。且可知将一个任意曲面拆分为规则图形和斜面是最理想的划分。
根据以上条件,求作曲面。
以作中心带有半径5、向上空心半球,宽为10、高度长度不定的曲面为例:
设点b在曲面中心位置,选择半径5的落沙,作半球。
8 /execute as @e at @s run setblock ~ ~1 ~ stone
设实体A沿曲面直径分布,作斜面。
8 /execute as @e at @s run fill ^5 ^-1 ^ ^-5 ^-1 ^ stone
使用斜面拼接、使用笔刷修正。连接半球和斜面,作完整曲面。
命题九
【命题九 - 笔刷】
- 笔刷:
笔刷分为两部分:笔刷控制和笔刷大小。
使用钓鱼竿是制作笔刷的最好选择,钓鱼竿方便携带,随放随收,还有一条线可以指示绘制的位置。
8 /execute as @p at @s run tp @e ^ ^ ^10
v /execute as @e at @s run fill ~1 ~1 ~1 ~-1 ~-1 ~-1 stone
使用多面体作为笔刷样式最为合适,笔刷大小可以根据不同情况随时替换。
使用clone输出可以很快就配置好笔刷,而使用结构方块保存笔刷然后使用structure输出可以免去读取区块的卡顿。
使用clone和结构方块可以轻易复制特定区域。
- 建造顺序:
根据公设1,理论上利用规则的图形可以作出一切图形。
在上述方法中,用命令做出框架是最复杂的。框架有两种制作顺序:
一、定好锚点,连接各点;
二、画出图形,中间镂空。
如上所述,画图的顺序也应当是先定好锚点,确认过路径无误再予以实施。
即定点再放置。
可以 很强 很久没看过几何命令帖子了 太高级了看不懂[哔哩_笑哭]
页: [1]