powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Алгоритм рисования цилиндра
25 сообщений из 95, страница 3 из 4
Алгоритм рисования цилиндра
    #39466614
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
roleks,
Какой конец трубы к нам ближе нижний или верхний ? (там, где 4 кружочка, рис. в посте [20542505] )
...
Рейтинг: 0 / 0
Алгоритм рисования цилиндра
    #39466616
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я - нет
...
Рейтинг: 0 / 0
Алгоритм рисования цилиндра
    #39466627
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1) По поводу Си и алгоритмов. Как я и думал - автору нужен алгоритм + реализация.
Голый алгоритм пишется как в умных книжках типа Кормена или Кнута на "птичьем
языке". Смесь модулы или АЯ. И я готов спорить на большое количество пива что
автору такая форма подачи ничем вообще не поможет. Поэтому я привел
фрагмент шаблонного кода на Java. Хотя он очень похож на Си и на С#.

2) В конструкторе я ошибся. Там еще есть радиус.

Код: java
1.
2.
3.
public Cylinder(Point3D center1,Point3D center2,double height,double R){
        // .....
}



И можно опционально добавить точность аппроксимации. Пускай это будет количество
граней (наподобие правильного многоугольника в качестве образующей).

Код: java
1.
2.
3.
public Cylinder(Point3D center1,Point3D center2,double height,double R,int proxyEdges){
        // .....
}



3) По поводу OpenGL. Сейчас - пофиг. Потому что у нас нету mesh цилиндра. А когда mesh будет - тогда
можно будет ее отрисовать через любую либу как через фасад или адаптер.
...
Рейтинг: 0 / 0
Алгоритм рисования цилиндра
    #39466628
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропил,
это вопрос к ТСу, чем он будет реализовывать алгоритм - до такой степени подробности и опускаться. Пока ничего неизвестно, ведь не просто же рисунок требуется.
...
Рейтинг: 0 / 0
Алгоритм рисования цилиндра
    #39466790
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonИ можно опционально добавить точность аппроксимации. Пускай это будет количество граней
mayton, по мне нет разницы в эллипсе или многоуг-ке. Будет уравнение эллипса в экранных к-тах - так какая разница кроме скорости, что проектировать на экран. Нужна красота?

В конце понадобится заглушка (матрица) и вектор смещения, чтобы привести наши "исходные" координаты в соответствие с заказчиковыми, и в этом видится проблемка на стороне ТС, возможно вплоть до истечения конечного срока.

Сначала допустим, что наши == ТС.
Допустим, наши - это поворот экранных на 90 вокруг Х по часовой:
Z ---) -Y
Y --) Z
X --) X
где экранные:
Z - на нас, (0, 0) в левом верхнем, Y - вниз?
Можно для простоты потом параметризовать ур-ние эллипса и сделать шаг равномерным по параметру, а палки рисовать - никакого GL потом не будет нужно.

Лично я до сих пор в догадках, для чего и в каком виде автору это нужно, т.к. сначала: дайте алгоритм, а потом: вот вам вертикальное бревно, нужен взгляд на него всегда немного сверху/снизу, вне зависимости от высоты бревна.

Ну вот же почти готовое ТЗ. Кто-нить продолжать будет? лично я не буду кодить, формулы если только неспеша изобразить.
...
Рейтинг: 0 / 0
Алгоритм рисования цилиндра
    #39466818
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exp98Нужна красота?
сетка нужна, а не уравнение. Топикстартер об этом писал
...
Рейтинг: 0 / 0
Алгоритм рисования цилиндра
    #39466826
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Алгоритм рисования цилиндра
    #39466856
roleks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Предлагаю упростить задачу:
есть окружность, заданная центром ( 3Д ) и радиусом
построенная по оси х-у
также есть 2 точки (линия), одна из которых совпадает с центром окружности.
Необходимо повернуть окружность чтоб она стала перпендикулярна линии.
...
Рейтинг: 0 / 0
Алгоритм рисования цилиндра
    #39466880
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
roleksПредлагаю упростить задачу:
есть окружность, заданная центром ( 3Д ) и радиусом
построенная по оси х-у
также есть 2 точки (линия), одна из которых совпадает с центром окружности.
Необходимо повернуть окружность чтоб она стала перпендикулярна линии.
исходная задача несколько понятнее была
...
Рейтинг: 0 / 0
Алгоритм рисования цилиндра
    #39466892
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да угол же между прямой и плоскостью
Рассказать как найти?
...
Рейтинг: 0 / 0
Алгоритм рисования цилиндра
    #39466906
roleks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exp98,

какой угол и что он даст?
...
Рейтинг: 0 / 0
Алгоритм рисования цилиндра
    #39466947
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
с той поправкой, что a, b, c уже даны в уравн-ии (1)
...
Рейтинг: 0 / 0
Алгоритм рисования цилиндра
    #39466996
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В азарте и забыл, что Т2 есть центр Окр., никаких t не надо, всё проще.
Одна ось на новой плоскости - диаметр Окр, к-рый перпендик. прямой
Другая ось - перпендик. первой.
Обе выходят из центра Окр.
Вопросы?
...
Рейтинг: 0 / 0
Алгоритм рисования цилиндра
    #39467026
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exp98maytonИ можно опционально добавить точность аппроксимации. Пускай это будет количество граней
mayton, по мне нет разницы в эллипсе или многоуг-ке. Будет уравнение эллипса в экранных к-тах - так какая разница кроме скорости, что проектировать на экран. Нужна красота?

В конце понадобится заглушка (матрица) и вектор смещения, чтобы привести наши "исходные" координаты в соответствие с заказчиковыми, и в этом видится проблемка на стороне ТС, возможно вплоть до истечения конечного срока.

Сначала допустим, что наши == ТС.
Допустим, наши - это поворот экранных на 90 вокруг Х по часовой:
Z ---) -Y
Y --) Z
X --) X
где экранные:
Z - на нас, (0, 0) в левом верхнем, Y - вниз?
Можно для простоты потом параметризовать ур-ние эллипса и сделать шаг равномерным по параметру, а палки рисовать - никакого GL потом не будет нужно.

Лично я до сих пор в догадках, для чего и в каком виде автору это нужно, т.к. сначала: дайте алгоритм, а потом: вот вам вертикальное бревно, нужен взгляд на него всегда немного сверху/снизу, вне зависимости от высоты бревна.

Ну вот же почти готовое ТЗ. Кто-нить продолжать будет? лично я не буду кодить, формулы если только неспеша изобразить.
Посмотрите на картинку 20542781 которую ТС изобразил. Это-же вырожденный случай.
Цилиндр расположен горизонтально. Нет... конечно на формулу это не очень влияет. Просто
если нужна диаграмма типа в Excel рисуют. То.. там даже нету перспективы. И освещение
там упрощенное. По сути... рисуется контур. И заливается градиентом. Только одно видимое
основание - заливается цветом.

Тащем-та я вангую что все что мы кодим ТС-у не очень нужно. Да пофиг...

Мыже тут - альтруисты.
...
Рейтинг: 0 / 0
Алгоритм рисования цилиндра
    #39467068
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще децл кода. Hey, ТС у тебя есть вопросы по коду?


Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
    public Cylinder(@Nonnull Point3D center1,@Nonnull Point3D center2, double height, double R, int proxyEdges){
        if (isEquals(center1,center2)) 
            throw new IllegalArgumentException("The centers are equals!");
        
        if (height < 0.0)
            throw new IllegalArgumentException("The height cannot be negative!");
        
        if (R < 0.0)
            throw new IllegalArgumentException("The radius cannot be negative!");
        
        if (proxyEdges <= 5)
            throw new IllegalArgumentException("The proxyEdges must be greather than 5");
        
        double step = 2.0 * PI / proxyEdges;
        
        // Add implementation here...
    }
...
Рейтинг: 0 / 0
Алгоритм рисования цилиндра
    #39467077
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
это фрагмент моего рисунка, я понял так, что нам пояснялось что надо получить, и я замял вопрос, направление значяения не имело. Зато имело место безразличие к наличию перспективы -- сммотрим всегда из бесконечности.
Из этих же соображений в последней постановке оси тоже будут без перспективы, но они и не рисуются.
...
Рейтинг: 0 / 0
Алгоритм рисования цилиндра
    #39467105
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonМы же тут - альтруистыНесмотря на затронутые тайные струны души я не гонюсь за очередным велосипедом и всё это время намекал. Постановка задачи приятнее))
...
Рейтинг: 0 / 0
Алгоритм рисования цилиндра
    #39467120
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exp98maytonМы же тут - альтруистыНесмотря на затронутые тайные струны души я не гонюсь за очередным велосипедом и всё это время намекал. Постановка задачи приятнее))
Я тоже никуда не спешу. Я для себя пытаюсь понять границы человеческого любопытства и лени.
...
Рейтинг: 0 / 0
Алгоритм рисования цилиндра
    #39467193
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonПотому что у нас нету mesh цилиндра

в исходниках three.js всё есть и достаточно прозрачно

https://threejs.org/docs/#api/geometries/CylinderGeometry

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
247.
248.
249.
250.
251.
252.
253.
254.
255.
256.
257.
258.
259.
260.
261.
262.
263.
264.
265.
266.
267.
268.
269.
270.
271.
272.
273.
274.
275.
276.
277.
278.
279.
280.
281.
282.
283.
284.
285.
286.
287.
288.
289.
290.
291.
292.
293.
294.
295.
296.
297.
298.
299.
300.
301.
302.
303.
304.
305.
306.
307.
308.
309.
310.
311.
312.
313.
314.
315.
316.
/**
 * @author mrdoob / http://mrdoob.com/
 * @author Mugen87 / https://github.com/Mugen87
 */

import { Geometry } from '../core/Geometry';
import { BufferGeometry } from '../core/BufferGeometry';
import { Float32BufferAttribute } from '../core/BufferAttribute';
import { Vector3 } from '../math/Vector3';
import { Vector2 } from '../math/Vector2';

// CylinderGeometry

function CylinderGeometry( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {

	Geometry.call( this );

	this.type = 'CylinderGeometry';

	this.parameters = {
		radiusTop: radiusTop,
		radiusBottom: radiusBottom,
		height: height,
		radialSegments: radialSegments,
		heightSegments: heightSegments,
		openEnded: openEnded,
		thetaStart: thetaStart,
		thetaLength: thetaLength
	};

	this.fromBufferGeometry( new CylinderBufferGeometry( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) );
	this.mergeVertices();

}

CylinderGeometry.prototype = Object.create( Geometry.prototype );
CylinderGeometry.prototype.constructor = CylinderGeometry;

// CylinderBufferGeometry

function CylinderBufferGeometry( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {

	BufferGeometry.call( this );

	this.type = 'CylinderBufferGeometry';

	this.parameters = {
		radiusTop: radiusTop,
		radiusBottom: radiusBottom,
		height: height,
		radialSegments: radialSegments,
		heightSegments: heightSegments,
		openEnded: openEnded,
		thetaStart: thetaStart,
		thetaLength: thetaLength
	};

	var scope = this;

	radiusTop = radiusTop !== undefined ? radiusTop : 20;
	radiusBottom = radiusBottom !== undefined ? radiusBottom : 20;
	height = height !== undefined ? height : 100;

	radialSegments = Math.floor( radialSegments ) || 8;
	heightSegments = Math.floor( heightSegments ) || 1;

	openEnded = openEnded !== undefined ? openEnded : false;
	thetaStart = thetaStart !== undefined ? thetaStart : 0.0;
	thetaLength = thetaLength !== undefined ? thetaLength : 2.0 * Math.PI;

	// buffers

	var indices = [];
	var vertices = [];
	var normals = [];
	var uvs = [];

	// helper variables

	var index = 0;
	var indexArray = [];
	var halfHeight = height / 2;
	var groupStart = 0;

	// generate geometry

	generateTorso();

	if ( openEnded === false ) {

		if ( radiusTop > 0 ) generateCap( true );
		if ( radiusBottom > 0 ) generateCap( false );

	}

	// build geometry

	this.setIndex( indices );
	this.addAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );
	this.addAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );
	this.addAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );

	function generateTorso() {

		var x, y;
		var normal = new Vector3();
		var vertex = new Vector3();

		var groupCount = 0;

		// this will be used to calculate the normal
		var slope = ( radiusBottom - radiusTop ) / height;

		// generate vertices, normals and uvs

		for ( y = 0; y <= heightSegments; y ++ ) {

			var indexRow = [];

			var v = y / heightSegments;

			// calculate the radius of the current row

			var radius = v * ( radiusBottom - radiusTop ) + radiusTop;

			for ( x = 0; x <= radialSegments; x ++ ) {

				var u = x / radialSegments;

				var theta = u * thetaLength + thetaStart;

				var sinTheta = Math.sin( theta );
				var cosTheta = Math.cos( theta );

				// vertex

				vertex.x = radius * sinTheta;
				vertex.y = - v * height + halfHeight;
				vertex.z = radius * cosTheta;
				vertices.push( vertex.x, vertex.y, vertex.z );

				// normal

				normal.set( sinTheta, slope, cosTheta ).normalize();
				normals.push( normal.x, normal.y, normal.z );

				// uv

				uvs.push( u, 1 - v );

				// save index of vertex in respective row

				indexRow.push( index ++ );

			}

			// now save vertices of the row in our index array

			indexArray.push( indexRow );

		}

		// generate indices

		for ( x = 0; x < radialSegments; x ++ ) {

			for ( y = 0; y < heightSegments; y ++ ) {

				// we use the index array to access the correct indices

				var a = indexArray[ y ][ x ];
				var b = indexArray[ y + 1 ][ x ];
				var c = indexArray[ y + 1 ][ x + 1 ];
				var d = indexArray[ y ][ x + 1 ];

				// faces

				indices.push( a, b, d );
				indices.push( b, c, d );

				// update group counter

				groupCount += 6;

			}

		}

		// add a group to the geometry. this will ensure multi material support

		scope.addGroup( groupStart, groupCount, 0 );

		// calculate new start value for groups

		groupStart += groupCount;

	}

	function generateCap( top ) {

		var x, centerIndexStart, centerIndexEnd;

		var uv = new Vector2();
		var vertex = new Vector3();

		var groupCount = 0;

		var radius = ( top === true ) ? radiusTop : radiusBottom;
		var sign = ( top === true ) ? 1 : - 1;

		// save the index of the first center vertex
		centerIndexStart = index;

		// first we generate the center vertex data of the cap.
		// because the geometry needs one set of uvs per face,
		// we must generate a center vertex per face/segment

		for ( x = 1; x <= radialSegments; x ++ ) {

			// vertex

			vertices.push( 0, halfHeight * sign, 0 );

			// normal

			normals.push( 0, sign, 0 );

			// uv

			uvs.push( 0.5, 0.5 );

			// increase index

			index ++;

		}

		// save the index of the last center vertex

		centerIndexEnd = index;

		// now we generate the surrounding vertices, normals and uvs

		for ( x = 0; x <= radialSegments; x ++ ) {

			var u = x / radialSegments;
			var theta = u * thetaLength + thetaStart;

			var cosTheta = Math.cos( theta );
			var sinTheta = Math.sin( theta );

			// vertex

			vertex.x = radius * sinTheta;
			vertex.y = halfHeight * sign;
			vertex.z = radius * cosTheta;
			vertices.push( vertex.x, vertex.y, vertex.z );

			// normal

			normals.push( 0, sign, 0 );

			// uv

			uv.x = ( cosTheta * 0.5 ) + 0.5;
			uv.y = ( sinTheta * 0.5 * sign ) + 0.5;
			uvs.push( uv.x, uv.y );

			// increase index

			index ++;

		}

		// generate indices

		for ( x = 0; x < radialSegments; x ++ ) {

			var c = centerIndexStart + x;
			var i = centerIndexEnd + x;

			if ( top === true ) {

				// face top

				indices.push( i, i + 1, c );

			} else {

				// face bottom

				indices.push( i + 1, i, c );

			}

			groupCount += 3;

		}

		// add a group to the geometry. this will ensure multi material support

		scope.addGroup( groupStart, groupCount, top === true ? 1 : 2 );

		// calculate new start value for groups

		groupStart += groupCount;

	}

}

CylinderBufferGeometry.prototype = Object.create( BufferGeometry.prototype );
CylinderBufferGeometry.prototype.constructor = CylinderBufferGeometry;


export { CylinderGeometry, CylinderBufferGeometry };

...
Рейтинг: 0 / 0
Алгоритм рисования цилиндра
    #39467213
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропил, я посмотрел исходник поверхностно.

Я не знаю что в нем есть. Но я скажу чего в нем нет.
В нем нет координат двух центров. Возможно данный нам в использование
замечательный исходник на JavaScript является частью более крупного
программного продукта где есть стек преобразований типа basic-transforms -> world-transforms.

И через basic-transforms мы можем эмулировать 2 центра.
Но это все хорошо для программного продукта типа Blender, 3dMax, AutoCad,
но для такого мелкого ТЗ как у автора - избыточно ИМХО.

Это примерно - как решать школьную задачку о двух сближающихся поездах
через диф-уравнения. Вроде-бы и можно ... но школьник не будет впечатлён
решением да и избыточно.

ИМХО
...
Рейтинг: 0 / 0
Алгоритм рисования цилиндра
    #39467381
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonВ нем нет координат двух центров. Возможно данный нам в использование
замечательный исходник на JavaScript является частью более крупного
программного продукта где есть стек преобразований типа basic-transforms -> world-transforms.
конечно есть полный набоп преобразовании
и генерация сеток для базовых фигур.
maytonИ через basic-transforms мы можем эмулировать 2 центра.
сколько пафоса - длина отрезка интересует - не более.

maytonЭто примерно - как решать школьную задачку о двух сближающихся поездах
через диф-уравнения
задача сетку построить,камеру поставить - озвучена явно,
без источника света - скучно


это же введение в 3D моделирование, какие к чертям дифуры?
не вижу избыточности.
...
Рейтинг: 0 / 0
Алгоритм рисования цилиндра
    #39467392
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропилзадача сетку построить,камеру поставить - озвучена явно,
без источника света - скучно

это же введение в 3D моделирование, какие к чертям дифуры?
не вижу избыточности.
Где камера? Автор вроде не говорил ничего о камерах?

Давайте хоть сетку построим.

А этот javascript-исходник ... он что на выходе дает? Я так и не понял.
...
Рейтинг: 0 / 0
Алгоритм рисования цилиндра
    #39467403
roleks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exp98roleks, я ожидал подобный вопрос.

Плоскость, перпенд-я прямой, можно задать уравнением (1)
0 = х /(x2-х1) + y /(y2-y1) +z /(z2-z1),
в к-ром коэфф-ты abc можно найти, потребовав пересечения с плоскостью окр-сти. В этом случаче с координатной плоскостью (ХУ)
То есть z=0

прямая, заданная парой точек T1/2= (х1/2, y1/2, z1/2),
пересекает плоскость, в к-рой лежит Окр(х0, у0, R),
в некой точке T3=(х3, у3, z3) = T1 +t*(T2-T1) (2)

Далее можно тупо найти косинус нужного угла и спроектировать диаметры окружности, параллельный и перпенд-й прямой, являющейся пересечением 2-х плоскостей.
Получим ур-ие эллипса по его полуосям, одна из к-рых == 2R.

А можно по прямой пересечения плоск-й достроить ось координат, найти м-цу M преобразования коорд-т и тогда по любой точке круга можно вычислить коорд-ты её проекции.

За мелкие неточности ссори.

для того чтоб построить матрицу преобразования, необходима еще 1 ось. ГШде ее взять?
...
Рейтинг: 0 / 0
Алгоритм рисования цилиндра
    #39467406
roleks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как найти недостающий мне вектор PU ?
...
Рейтинг: 0 / 0
Алгоритм рисования цилиндра
    #39467408
roleks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ссылка не вставилась
...
Рейтинг: 0 / 0
25 сообщений из 95, страница 3 из 4
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Алгоритм рисования цилиндра
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]