有一个鹅卵石商人。他出售用于照亮地板的鹅卵石。他的主要职责是占据房间两侧的长度。但他有时会犯这样的错误,错误导致损失。所以,他来找你,并要求你制作一辆小型智能车,它可以沿着房间的墙壁运行并计算它们的长度。
汽车必须从它开始的地方回来。这意味着起点与结束点相同。当汽车给出房间墙壁的长度时,您可以计算出地板的表面积。
了解表面区域 ,您可以用鹅卵石计算覆盖整个楼层的价格。占地1平方米需要3公斤鹅卵石。鹅卵石的价格是每公斤5美元。
例如,使用两个阵列说明汽车的测量值。
Array 1 = {L, R, L, R, R, L, R, R, L, R, R, L, R, L, L, R, Z}
L
表示汽车左转。 R
表示汽车右转。 Z表示终点在最后一圈之后。以下图片将清除任何误解(在此示例中为Array 1 = {L, R, R, R, Z}
)。
Array 2 = {3, 4, 2, 3, 2, 4, 5, 4, 2, 3, 2, 1, 2, 2, 2, 1, 2}
Array2
的元素表示在进行相应的转弯后,由汽车覆盖的长度(以米为单位)。
{3L, 4R, 2L, 3R, 2R, 4L, 5R, 4R, 2L, 3R, 2R, 1L, 2R, 2L, 2L, 1R, 2Z}
在此表示中,可以清楚地看到从进入转折点开始的方向以及到下一个转折点的距离。 Z
中的最后一个元素Array1
表示Array2
中的相应长度是最终距离,并且在覆盖此长度后汽车将处于结束点。
给定图片的面积为63平方米,覆盖的费用为945美元。
答案 0 :(得分:2)
只需保存每个顶点的每个坐标。 Then use this to compute area
您首先需要从L,2 R,5,......中获取绳索。
Start from origin(assuming downwards is +y and rightwards is +x on screen):
L,2---->go left 2 units. Result: P1=(-2,0)
R,1---->turn right and go 1 units. Result: P2=(-2,-1)
R,3--->turn right and go 3 units. Result: P3=(1,-1)
...
...
Lets say we have 3 points: P1=(-2,0), P2=(-2,-1), P3=(1,-1)
Area=0.5*abs(x1*y2+x2*y3+x3*y1-x2*y1-x3*y2-x1*y3)
=0.5*abs(2+2+0-0+1-2)
=0.5*3.0
=1.5 units
Wolframalpha.com gives the same result(1.5) when you write:
"triangle area (-2,0) (-2,-1) (1,-1)"
使用所有这些点作为Shoelace_formula的数据来封闭区域 关于这个的数学是:
然后你唯一需要将它与卵石/面积/金钱的成本相乘。
答案 1 :(得分:0)
这个问题实际上是不可能回答的;你必须知道汽车在每个转弯处转弯多少。 假设每个转弯都是直角的,那么回答很可惜。