48 lines
2.2 KiB
C#
48 lines
2.2 KiB
C#
#define Graph_And_Chart_PRO
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using UnityEngine;
|
|
|
|
namespace ChartAndGraph
|
|
{
|
|
class PyramidMesh
|
|
{
|
|
public static void Generate2dMesh(UIVertex[] mesh, Vector2[] normals,float baseX1, float baseX2,float baseSize, float slopLeft, float slopeRight, float height,float startV,float endV)
|
|
{
|
|
float halfHeight = height * 0.5f;
|
|
float halfWidth = baseSize * 0.5f;
|
|
slopLeft = -Mathf.Clamp(slopLeft, -90, 90) +90;
|
|
slopeRight = Mathf.Clamp(slopeRight ,- 90, 90) +90;
|
|
|
|
float tanLeft = (1f/Mathf.Tan(slopLeft * Mathf.Deg2Rad)) * height;
|
|
float tanRight =(1f/Mathf.Tan(slopeRight * Mathf.Deg2Rad)) * height;
|
|
|
|
float leftPos = baseX1 + tanLeft;
|
|
float rightPos = baseX2 + tanRight;
|
|
leftPos = Mathf.Clamp(leftPos, 0,baseSize);
|
|
rightPos = Mathf.Clamp(rightPos, 0, baseSize);
|
|
|
|
|
|
if (leftPos > rightPos)
|
|
leftPos = rightPos = Mathf.Clamp(Mathf.Lerp(leftPos, rightPos, 0.5f), 0, baseSize);
|
|
|
|
UIVertex v1 = ChartCommon.CreateVertex(new Vector3(baseX1 - halfWidth, -halfHeight), new Vector2(0f, startV));
|
|
UIVertex v2 = ChartCommon.CreateVertex(new Vector3(baseX2 - halfWidth, -halfHeight), new Vector2(1f, startV));
|
|
UIVertex v3 = ChartCommon.CreateVertex(new Vector3(leftPos - halfWidth, halfHeight), new Vector2(0f, endV));
|
|
UIVertex v4 = ChartCommon.CreateVertex(new Vector3(rightPos - halfWidth, halfHeight), new Vector2(1f, endV));
|
|
|
|
normals[0] = ((Vector2.up + ChartCommon.Perpendicular(v3.position - v1.position).normalized) * 0.5f).normalized;
|
|
normals[1] = ((Vector2.up + ChartCommon.Perpendicular(v2.position - v4.position).normalized) * 0.5f).normalized;
|
|
normals[2] = ((Vector2.down + ChartCommon.Perpendicular(v3.position - v1.position).normalized) * 0.5f).normalized;
|
|
normals[3] = ((Vector2.down + ChartCommon.Perpendicular(v2.position - v4.position).normalized) * 0.5f).normalized;
|
|
|
|
mesh[0] = v1;
|
|
mesh[1] = v2;
|
|
mesh[2] = v3;
|
|
mesh[3] = v4;
|
|
}
|
|
}
|
|
}
|