어쨌든 (x 텍스트 상자에서) x, y (y 텍스트 상자에서), z (z 텍스트 상자에서)를 vb 형식으로 플롯 할 수 있습니까? Windows 응용 프로그램입니다. x, y, z 좌표를 나타내는 세 개의 텍스트 상자가 있습니다. 나는이 점을 사용자에게 보여줄 수있는 도구 나 방법이 있는지 궁금합니다. 플롯 (x, y, z)
답변
두 가지 주요 방법이 있습니다. 1) (x, y, z) 좌표를 평면 프로젝트 (x, y)로 변환하고 gdi+을 사용하여 화면에 그리거나, opentk을 사용하여 GLControl
에 직접 점을 그 으십시오. 뷰포트 및 투영 먼저
매우 귀엽지는 않지만 여기에 을 사용하는 개념 증명이 OpenTK입니다.
public partial class Form1 : Form
{
bool loaded=false;
public Form1()
{
InitializeComponent();
}
public Vector3 PointCoordinates
{
get
{
float x=0, y=0, z=0;
float.TryParse(xTextBox.Text, out x);
float.TryParse(yTextBox.Text, out y);
float.TryParse(zTextBox.Text, out z);
return new Vector3(x, y, z);
}
set
{
xTextBox.Text=value.X.ToString();
yTextBox.Text=value.Y.ToString();
zTextBox.Text=value.Z.ToString();
}
}
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
PointCoordinates=new Vector3(0, 0, 0);
loaded=true;
SetupViewPort();
}
private void glControl1_Resize(object sender, EventArgs e)
{
if(!loaded) return;
SetupViewPort();
}
private void glControl1_Paint(object sender, PaintEventArgs e)
{
glControl1.MakeCurrent();
GL.ClearColor(glControl1.BackColor);
GL.Clear(ClearBufferMask.ColorBufferBit|ClearBufferMask.DepthBufferBit);
GL.MatrixMode(MatrixMode.Modelview);
GL.LoadIdentity();
SetupCamera();
// Draw Coordinate System
GL.LineWidth(1.5f);
GL.Begin(PrimitiveType.Lines);
GL.Color3(Color.Red);
GL.Vertex3(0, 0, 0);
GL.Vertex3(1, 0, 0);
GL.Vertex3(0.85, 0.05, -0.05);
GL.Vertex3(1, 0, 0);
GL.Vertex3(0.85, -0.05, 0.05);
GL.Vertex3(1, 0, 0);
GL.Color3(Color.Green);
GL.Vertex3(0, 0, 0);
GL.Vertex3(0, 1, 0);
GL.Vertex3(-0.05, 0.85, 0.05);
GL.Vertex3(0, 1, 0);
GL.Vertex3(0.05, 0.85, -0.05);
GL.Vertex3(0, 1, 0);
GL.Color3(Color.Blue);
GL.Vertex3(0, 0, 0);
GL.Vertex3(0, 0, 1);
GL.Vertex3(-0.05, 0.05, 0.85);
GL.Vertex3(0, 0, 1);
GL.Vertex3(0.05, -0.05, 0.85);
GL.Vertex3(0, 0, 1);
GL.End();
// Draw a single point
var vector=PointCoordinates;
GL.PointSize(5f);
GL.Begin(PrimitiveType.Points);
GL.Color3(Color.Black);
GL.Vertex3(vector);
GL.End();
GL.PointSize(3f);
GL.Begin(PrimitiveType.Points);
GL.Color3(Color.Yellow);
GL.Vertex3(vector);
GL.End();
glControl1.SwapBuffers();
}
void SetupViewPort()
{
float wt=Math.Max(1, glControl1.Width);
float ht=Math.Max(1, glControl1.Height);
float sz=(float)Math.Sqrt(ht*wt);
GL.Viewport((int)(wt-sz)/2, (int)(ht-sz)/2, (int)sz, (int)sz);
var ortho=Matrix4.CreateOrthographic(
10f, 10f, 1f, 200f);
GL.MatrixMode(MatrixMode.Projection);
GL.LoadMatrix(ref ortho);
}
void SetupCamera()
{
Matrix4 lookAt=Matrix4.LookAt(
10f, 5f, 15f,
0f, 0f, 0f,
0f, 1f, 0f);
GL.MatrixMode(MatrixMode.Modelview);
GL.LoadMatrix(ref lookAt);
}
private void button1_Click(object sender, EventArgs e)
{
glControl1.Refresh();
}
}
점을 조금 부드럽게하려면'GL.Hint (HintTarget.PointSmoothHint, HintMode.Nicest);도 해보고 싶을 수도 있습니다. – ja72
내 출력물은 위에 게시 한 그림과 유사하지만 말했듯이, 나는 여러 점을 가지고있을 것입니다. 양식이 이미 있는데 양식의 측면에이 기능을 추가하고 싶습니다. 이 코드를 코드에 어떻게 추가해야합니까? 나는 opentk을 설치했다. 코드를 사용하려면이 폴더를 특정 위치에 두어야합니까? – user3396709
프로젝트에서'OpenTK'를 참조 했습니까? 'OpenTK.GLControl'에 대한 참조를 추가하고 기존 양식에'GLControl'을 추가해야합니다. opentk로 문서를 읽고 질문에 [SO]를 게시하십시오. – ja72
- 1. X, Y, Z 점과면 도면
- 2. 플롯 점 (X, Y) Matlab과
- 3. 지도 및 (X, Y), (X, Z)와 (Y, Z) 쌍과 관련된 X 작업, Y 또는 Z는
- 4. 주어진 X, Y 및 Z 벡터
- 5. 3d 그래프 (x, y, z)
- 6. 팬더 간단한 X Y 플롯
- 7. 비트 AND AND x & y = z, x =?
- 8. 프로그래밍 방식으로 X w/5 (Y || Z)를 "X Y"~ 5 || "X Z"~ 5
- 9. MATLAB에서 함수 f (x, y, z) = 0에 대한 솔루션 공간 (x, y, z)를 찾는 방법
- 10. translate3d (x, y, z)를 사용하여 이동하는 요소의 현재 (x, y, z)를 찾을 수 있습니까?
- 11. URL의 PHP - '&'를 (x & y & z, x 또는 y 또는 z 대신) 추가하는 방법은 무엇입니까?
- 12. VEC3의 X, Y, Z 원소 수정 방법
- 13. 주어진 x, y, z 좌표의 방향을 찾으십시오
- 14. X(). Y (Z()) 및 표준의 평가 순서
- 15. 새로운 T (x, y, z) 함수로
- 16. M (x) + M [y] = N [z]
- 17. pictureBox의 드로잉 (X, Y, Z) 플로트 포인트
- 18. 푸의 MATLAB의 의미 란 (X, Y, Z)
- 19. X Y Z 데이터의 3D 메시
- 20. X 및 Y 또는 Z - 삼자 연산자
- 21. x, y 및 z 열의 값을 인쇄하려면
- 22. iOS - CLHeading의 x, y, z 값 해석
- 23. "isset ($ x)? $ y : $ z"는 무엇을 의미합니까?
- 24. (x, y, z)의 DirectX 텍스트
- 25. x + y-z - 1과 1 사이
- 26. 회전 각도 계산 X-Y-Z
- 27. ggplot2를 사용하여 여러 x, y 좌표 플롯
- 28. X 축 및 Y 축 플롯 날짜
- 29. 템플릿 X, Y, Z와 포인트 기능과 점(), Y(), Z()
- 30. ios 코어 플롯 - 분산 플롯 원이 x, y 축과 겹칩니다.
내가 방금 점 이상을 보여주고 싶은 가정합니다. 좌표 축에는 레이블, 점에 채워진 원 및 점 옆에 레이블이 표시되어야 할 수 있습니다. 또한 좌표 값이 표시 될 수 있습니다. 결과가 무엇인지 구체적으로 기재하십시오. "요점을 표시하는"_how_에는 명확한 설명이 필요합니다. – ja72