The RationalistSkip to content
program do rysowania linii i powierzchni 3D z punktów

This plot has expired

Sections of Forum » Nauka
Date of addingAuthorTitle
11-02-2023 16:38alsor (3312 points)program do rysowania linii i powierzchni 3D z punktów
Jaki program/aplikacja narysuje mi powierzchnię z podanych punktów?

znaczy takie dane podajemy:

start: x,y,z

a potem milion kolejnych: xyz, czyli 999999 odcinków.

i to ma mi zrobić i narysować z tego powierzchnię - full 3D, i obracaną do tego.
Author can remove replies violating regulations or out of topic.

Duch Prawdy (14839 points)
>start:
www.racjonalista.pl/forum.php/s,898632#w898854


(Jedyną i) Absolutną Prawdą jest (Bezinteresowna) Miłość.
alsor (3312 points)
>>start:
>www.racjonalista.pl/forum.php/s,898632#w898854
>
(Jedyną i) Absolutną Prawdą jest (Bezinteresowna) Miłość.


twoja ankieta jest do dupy, bo zapomniałeś podać alternatywę.

i ja podam tę alternatywę: nie ma alternatywy... haha!

głosowanie wprost przeciw czemuś nie ma po prostu sensu.
Duch Prawdy (14839 points)
>>>start:
>>www.racjonalista.pl/forum.php/s,898632#w898854
>>
(Jedyną i) Absolutną Prawdą jest (Bezinteresowna) Miłość.

>twoja ankieta jest do dupy, bo zapomniałeś podać alternatywę.
>i ja podam tę alternatywę:
A ja lewatywę.


(Jedyną i) Absolutną Prawdą jest (Bezinteresowna) Miłość.
farmer (22440 points)
!
>głosowanie wprost przeciw czemuś nie ma po prostu sensu.

Ma. Dlatego są wybory.

Jak odetnie tlen samoistnie dla tej witryny to gdzie przeczytam o tym co tu wstawiasz?

Niech zgadne.....nie wiem nie będę szukał.

A brak odbiorców dla swoich treści to największy ból dupy dla wstawiających posty.
alsor (3312 points)
>!
>>głosowanie wprost przeciw czemuś nie ma po prostu sensu.
>Ma. Dlatego są wybory.

Nie ma.

>Jak odetnie tlen samoistnie dla tej witryny to gdzie przeczytam o tym co tu wstawiasz?
>Niech zgadne.....nie wiem nie będę szukał.
>A brak odbiorców dla swoich treści to największy ból dupy dla wstawiających posty.

Obawiam się że setki innych 'witryn'...
zresztą sam używam z... 44 chyba.
uxbridge (5980 points)
A ChatGPT na to:
Here's an example of a simple C++ program that reads a list of vertices from a file and uses OpenGL to render the surface built from those vertices:
#include <iostream>
#include <fstream>
#include <vector>
#include <cmath>
#include <GL/glut.h>

using namespace std;

struct Vertex {
float x, y, z;
};

vector<Vertex> vertices;

void init() {
glClearColor(0.0, 0.0, 0.0, 0.0);
glShadeModel(GL_SMOOTH);
glEnable(GL_DEPTH_TEST);
}

void display() {
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glBegin(GL_TRIANGLES);
for (int i = 0; i < vertices.size(); i++) {
glVertex3f(vertices[i].x, vertices[i].y, vertices[i].z);
}
glEnd();
glFlush();
}

void reshape(int w, int h) {
glViewport(0, 0, (GLsizei)w, (GLsizei)h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(60.0, (GLfloat)w/(GLfloat)h, 1.0, 20.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);
}

void readVertices(const char* filename) {
ifstream file(filename);
if (!file.is_open()) {
cout << "Error opening file." << endl;
return;
}
while (!file.eof()) {
Vertex v;
file >> v.x >> v.y >> v.z;
vertices.push_back(v);
}
file.close();
}

int main(int argc, char** argv) {
if (argc != 2) {
cout << "Usage: program filename" << endl;
return 1;
}
readVertices(argv[1]);
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH);
glutInitWindowSize(500, 500);
glutInitWindowPosition(100, 100);
glutCreateWindow("Surface");
init();
glutDisplayFunc(display);
glutReshapeFunc(reshape);
glutMainLoop();
return 0;
}

In this example, the program reads a list of vertices from a file and stores them in a vector. The display function uses OpenGL to render the surface built from those vertices as a series of triangles. The reshape function sets up the projection and view matrices for a perspective view of the scene. The readVertices function reads the vertices
alsor (3312 points)
>A ChatGPT na to:
>Here's an example of a simple C++ program that reads a list of vertices from a file and uses OpenGL to render the surface built from those vertices:
>#include <iostream>
>#include <fstream>
>#include <vector>
>#include <cmath>
>#include <GL/glut.h>using namespace std;
>struct Vertex {
> float x, y, z;
>};
>vector<Vertex> vertices;
>void init() {
> glClearColor(0.0, 0.0, 0.0, 0.0);
> glShadeModel(GL_SMOOTH);
> glEnable(GL_DEPTH_TEST);
>}
>void display() {
> glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
> glBegin(GL_TRIANGLES);
> for (int i = 0; i < vertices.size(); i++) {
> glVertex3f(vertices[i].x, vertices[i].y, vertices[i].z);
> }
> glEnd();
> glFlush();
>}
>void reshape(int w, int h) {
> glViewport(0, 0, (GLsizei)w, (GLsizei)h);
> glMatrixMode(GL_PROJECTION);
> glLoadIdentity();
> gluPerspective(60.0, (GLfloat)w/(GLfloat)h, 1.0, 20.0);
> glMatrixMode(GL_MODELVIEW);
> glLoadIdentity();
> gluLookAt(0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);
>}
>void readVertices(const char* filename) {
> ifstream file(filename);
> if (!file.is_open()) {
> cout << "Error opening file." << endl;
> return;
> }
> while (!file.eof()) {
> Vertex v;
> file >> v.x >> v.y >> v.z;
> vertices.push_back(v);
> }
> file.close();
>}
>int main(int argc, char** argv) {
> if (argc != 2) {
> cout << "Usage: program filename" << endl;
> return 1;
> }
> readVertices(argv[1]);
> glutInit(&argc, argv);
> glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH);
> glutInitWindowSize(500, 500);
> glutInitWindowPosition(100, 100);
> glutCreateWindow("Surface");
> init();
> glutDisplayFunc(display);
> glutReshapeFunc(reshape);
> glutMainLoop();
> return 0;
>}
>In this example, the program reads a list of vertices from a file and stores them in a vector. The display function uses OpenGL to render the surface built from those vertices as a series of triangles. The reshape function sets up the projection and view matrices for a perspective view of the scene. The readVertices function reads the vertices

to nie jest powierzchnia z punktów, czy linii, lecz z serii zadanych trójkątów, co jest banalne.
uxbridge (5980 points)
>to nie jest powierzchnia z punktów, czy linii, lecz z serii zadanych trójkątów, co jest banalne.
Trójkąty w jednoznaczny sposób definiują jedną powierzchnię lub większą ich liczbę. Lista punktów lub odcinków tylko w szczególnych przypadkach. Dlatego nikt rozsądny tego nie robi.
alsor (3312 points)
>>to nie jest powierzchnia z punktów, czy linii, lecz z serii zadanych trójkątów, co jest banalne.
>Trójkąty w jednoznaczny sposób definiują jedną powierzchnię lub większą ich liczbę. Lista punktów lub odcinków tylko w szczególnych przypadkach. Dlatego nikt rozsądny tego nie robi.

Nie, bo to jest zadanie z frezarki:

a tam frez biega odcinkami - trójkąty są tu bezużyteczne.

Frez ma grubość np. 8mm, i półkulę na końcu,
zatem gdy on robi powierzchnię, wtedy wycina te półkola faktycznie...

np. skok o x=1mm dla d = 8mm, czyli r=4mm rabi błąd typu:

1/2 (x/r)^2 = 1/2 1/16 = 1/32

co razy 4, bo taki jest promień daje: 1/8 = 0.125 mm
czyli dość nieźle - zaledwie około 0.1mm błędu.

aby uzyskać lepszą dokładność np. 0.02 mm, no to wtedy skok byłby:

4 x^2/16 = 0.02 => x^2 = 0.08 => x = 0.28 mm,

4 razy ciaśniej - więcej tych odcinków, więc czasu.

..........

No i takie proste frezowanie polega na wycinaniu tą kulą o promieniu 4mm,
powiedzmy, dowolnej powierzchni typu:

z = z(x,y);

np. półkula: z = sqrt(R^2-x^2+y^2)

i teraz musisz określić linię po której jedziesz - dookoła zazwyczaj, a nie trójkąty!

np. 50 okręgów o promieniu r = R - iR/50; i = 0..49
ale okrąg też ma być z odcinków, zatem np. co 1 stopień, co daje 360.

50 x 360 = ... tyle mamy punktów.
uxbridge (5980 points)
>Jaki program/aplikacja narysuje mi powierzchnię z podanych punktów?
...
>Nie, bo to jest zadanie z frezarki:
Sam sobie rozwiązuj swoje zadania. Szczególnie takie, któych treść zmienia się w czasie.
alsor (3312 points)
>>Jaki program/aplikacja narysuje mi powierzchnię z podanych punktów?
>...
>>Nie, bo to jest zadanie z frezarki:
>Sam sobie rozwiązuj swoje zadania. Szczególnie takie, któych treść zmienia się w czasie.

Ale to nie moje zadanie - cały światowy przemysł na tym pracuje od wieku przynajmniej:

frezarki, plotery, drukarki - słyszałeś o takich wynalazkach?

Obstawiam w ciemno że nawet... kura frezuje swoje jaja - dlatego są takie krzywe: czubate z jednej strony, a z drugiej... też, ale mniej, bo ona trochę głupia jest więc nie potrafi równo tego robić. hihi!

Back to the list of plots działu Nauka 
To write in this plot, you have to sign in


 


[ Cooperation ] [ Advertise ] [ Map of the site ] [ F.A.Q. ] [ Store ] [ Sign up ] [ Contact ]
The Rationalist © Copyright 2000-2018 (English section of Polish Racjonalista.pl)
The Polish Association of Rationalists (PSR)