Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local ply = Instance.new("WedgePart")
- ply.formFactor = "Custom"
- ply.TopSurface = 0
- ply.BottomSurface = 0
- ply.Anchored = true
- ply.Size = Vector3.new(0.2,7,7)
- local msh = Instance.new("SpecialMesh")
- msh.MeshType = 2
- msh.Parent = ply
- function ParaD(a, b, c)
- local dot = (b-a).x*(c-a).x + (b-a).y*(c-a).y + (b-a).z*(c-a).z
- return dot / (a-b).magnitude
- end
- function PerpD(a, b, c)
- local par = ParaD(a, b, c)
- return math.sqrt((c-a).magnitude^2 - par^2)
- end
- local _P0, _P1 = nil, nil
- function draw(vec1, vec2, vec3)--, id)
- local A, B, C = nil, nil, nil
- local p0, p1 = ply:clone(), ply:clone()
- local rmodel = Instance.new("Model")
- _P0 = p0
- _P1 = p1
- local s1 = (vec1 - vec2).magnitude
- s2 = (vec2 - vec3).magnitude
- s3 = (vec3 - vec1).magnitude
- local smax = math.max(s1, s2, s3)
- if (vec1 - vec2).magnitude == smax then
- A = vec1
- B = vec2
- C = vec3
- elseif (vec2 - vec3).magnitude == smax then
- A = vec2
- B = vec3
- C = vec1
- elseif (vec3 - vec1).magnitude == smax then
- A = vec3
- B = vec1
- C = vec2
- end
- local perp = PerpD(A, B, C)
- local para = ParaD(A, B, C)
- local dif_para = (A-B).magnitude - para
- local ambig = false
- p0.Mesh.Scale = Vector3.new(0.1, 1,1)
- p0.Size = Vector3.new(.2, perp, para)
- p0.CFrame = CFrame.new(B, A)
- local Top_Look = (p0.CFrame * CFrame.Angles(math.pi/2, 0, 0)).lookVector
- local Mid_Point = A + CFrame.new(A, B).lookVector * para
- local Needed_Look = CFrame.new(Mid_Point, C).lookVector
- local dot = (Top_Look.x * Needed_Look.x) + (Top_Look.y * Needed_Look.y) + (Top_Look.z * Needed_Look.z)
- p0.CFrame = p0.CFrame * CFrame.Angles(0, 0, math.acos(dot))
- if ((p0.CFrame * CFrame.Angles(math.pi/2, 0, 0)).lookVector - Needed_Look).magnitude > 0.01 then
- p0.CFrame = p0.CFrame * CFrame.Angles(0, 0, -2*math.acos(dot))
- ambig = true
- end
- p0.CFrame = p0.CFrame * CFrame.new(0, perp/2, -(dif_para + para/2))
- p0.Parent = rmodel
- p0.Name = "P0"
- p1.Mesh.Scale = Vector3.new(0, 1,1)
- p1.Size = Vector3.new(.2, perp, dif_para)
- p1.CFrame = CFrame.new(B, A) * CFrame.Angles(0, 0, math.acos(dot)) * CFrame.Angles(0, math.pi, 0)
- if ((p1.CFrame * CFrame.Angles(math.pi/2, 0, 0)).lookVector - Needed_Look).magnitude > 0.01 then
- p1.CFrame = p1.CFrame * CFrame.Angles(0, 0, 2*math.acos(dot))
- ambig = true
- end
- p1.CFrame = p1.CFrame * CFrame.new(0, perp/2, dif_para/2)
- p1.Parent = rmodel
- p1.Name = "P1"
- table.insert(triangles, p0)
- table.insert(triangles, p1)
- return rmodel
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement