openjscad-aurora-webapp

Форк
0
/
four2three-round.jscad 
52 строки · 1.3 Кб
1
// title: Four to three (sides)
2
// author: Eduard Bespalov
3
// license: MIT License
4
// description: testing solidFromSlices()
5

6
function getParameterDefinitions() {
7
  return [
8
	{ name: 'radius', caption: 'Radius:', type: 'float', default: 10 },
9
	{ name: 'height', caption: 'Height:', type: 'float', default: 35 },
10
	{ name: 'twist', caption: 'Twist:', type: 'int', default: 90}
11
  ];
12
}
13

14
function main(params) {
15
	var thing = thingTwisted(params.radius, params.height, params.twist);
16
	return thing;
17
}
18

19
function thingTwisted(radius, height, twistangle) {
20
  twistangle = twistangle || 0;
21

22
	var cag = CAG.fromPoints([
23
		[-radius, -radius, 0],
24
		[radius, -radius, 0],
25
		[radius, radius, 0]
26
	]).expand(2, CSG.defaultResolution2D);
27

28
	var flatBottom = CSG.Polygon.createFromPoints(
29
		cag.getOutlinePaths()[0].points
30
	);
31

32
  var thing = flatBottom.solidFromSlices({
33
	numslices: height
34
	,callback: function(t) {
35
		var coef = 1 - t;
36
		if (coef < 0.01) coef = 0.01;//must not collapse polygon
37
		var h = height * t;
38
		var cag = CAG.fromPoints([
39
			[-radius, -radius, h],
40
			[radius, -radius, h],
41
	 		[radius * coef, radius, h],
42
			[-radius * coef, radius, h]
43
		]).expand(2, CSG.defaultResolution2D)
44
			.rotate([0,0,0], [0,0,1], twistangle * t);
45

46
		return CSG.Polygon.createFromPoints(
47
			cag.getOutlinePaths()[0].points
48
		).translate([0, 0, h]);
49
	}
50
  });
51
   return thing;
52
}
53

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.