![]()  | 
	
 
  | 
| 
		 
			 
			#1  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Привет. подскажыте плиз как нарисовать окружность на форме ПО ПИКСЕЛЯМ? Т.е. не стандартным Ellips'ом, а с помощью Form1.Canvas.Pixels[x,y]. Нужен сам алгоритм (курсовик такой). Заранее спасибо! 
		
	
		
		
		
		
		
	
		
		
	
	
	 | 
| 
		 
			 
			#2  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 по формуле окружности: 
		
	
		
		
		
		
		
	
		
		
	
	
	Y= -b±sqrt(sqr(R)-sqr(X-a)) где (a,b) центр окружности. перевести это в паскалевский синтаксис и загнать в цикл думаю сам догадаешься   игрека 2 штуки для кажд Х как видишь. | 
| 
		 
			 
			#3  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 | 
| 
		 
			 
			#4  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 не совсем понятно.... почему стоит плюс/минус (какой знак использовать на этом месте) и с каким условием (или диапазон) должен быть цикл? 
		
	
		
		
		
		
		
	
		
		
	
	
	 | 
| 
		 
			 
			#5  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 //Должно работать 
		
	
		
		
		
		
		
	
		
		
	
	
	function TForm1.RotatePixel(x0,y0,x,y,alpha:real):Tpoint; //Поврот точки var Pix:TPoint; R:real; beta:real; begin R:=sqrt(sqr(x0-x)+sqr(y0-y)); //Находим радиус beta:=ArcTan2((y0-y),(x0-x)); //Компинсирующий угол alpha:=pi*alpha/180; Pix.X:=Round(R*-cos(alpha-beta)+x0); Pix.y:=Round(R*sin(alpha-beta)+y0); result:=Pix; end; procedure TForm1.DrawCircle(x0,y0,R:real); var i:real; pix:Tpoint; begin i:=0; while i<3600 do begin i:=i+0.1; Pix:=rotatePixel(x0,y0,x0+R,y0,i); form1.Canvas.Pixels[Round(Pix.X),Round(Pix.Y)]:=clblack; end; end;  | 
| 
		 
			 
			#6  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Decoding и ART - спасибо большое!! оба варианта работают :-) 
		
	
		
		
		
		
		
	
		
		
	
	
	 |