Konsol ekranında rasgele eşkenar üçgenler oluşturmaya çalışıyorum.Bazen eşkenar ve bazen olmayan üçgenler?
Kullandığım yöntem üçgenin (rastgele konumlandırılmış) orta noktasını oluşturmak, orta noktayı başlangıç noktasına (0,0) taşımak ve ardından merkezden 3 nokta oluşturmak (yarıçapı (rasgele sayı) eklemek) oluşturmaktır. Üçgenin her bir noktanın Y eksenine göre). Sonra biri 120 derece, diğeri 240'da bir eşkenar üçgen yaparak 2 noktayı döndürürüm, sonra noktalar arasında çizgiler çizerim. Daha sonra noktaları centroid ile ilgili orijinal arsaya geri getirin.
Bu, zamanın en eskisi için çalışır ve bir eşkenar üçgene sahip olurum, ancak diğer zamanlarda tam olarak bir eşkenar üçgen elde edemiyorum ve neden tam bir zarara uğruyorum.
Brensenham'ın çizgi algoritmasını kullanarak noktalar arasındaki çizgiyi çiziyorum. çalışma üçgenin
Resim: Kırık üçgenin http://imgur.com/GpF406O
Resmi: İki görüntüleri baktığımızda
void Triangle::createVertex(Vertex cent)
{
// angle of 120 in radians
double s120 = sin(2.0943951024);
double c120 = cos(2.0943951024);
// angle of 240 in radians
double s240 = sin(4.1887902048);
double c240 = cos(4.1887902048);
// bringing centroid to the origin and saving old pos to move later on
int x = cent.getX();
int y = cent.getY();
cent.setX(0);
cent.setY(0);
// creating the points all equal distance from the centroid
Vertex v1(cent.getX(), cent.getY() + radius);
Vertex v2(cent.getX(), cent.getY() + radius);
Vertex v3(cent.getX(), cent.getY() + radius);
// rotate points
double newx = v1.getX() * c120 - v1.getY() * s120;
double newy = v1.getY() * c120 + v1.getX() * s120;
double xnew = v2.getX() * c240 - v2.getY() * s240;
double ynew = v2.getY() * c240 + v2.getX() * s240;
// giving the points the actual location in relation the the old pos of the centroid
v1.setX(newx + x);
v1.setY(newy + y);
v2.setX(xnew + x);
v2.setY(ynew + y);
v3.setX(x);
v3.setY(y + radius);
// adding the to a list (list is used in a function to draw the lines)
vertices.push_back(v1);
vertices.push_back(v2);
vertices.push_back(v3);
}
İki üçgeninizin resimlerine bakmak, üçgenlerin (metin karakterleriyle temsil edilen) piksellerle çizilmesi gibi görünebilir; bu da, her bir köşe noktasını (ya bu piksel sırası ya da bir sonraki satır) çizmek için kesin olarak izin verilen konumların olmasını sağlar.) Benim tahminim, çizgilerin çizilmesi için kullandığınız algoritmanın bir çeşit arama yapması (bu satırı a veya satır b olarak çizmesi) ve her iki köşe için de aynı satırın seçilmemesidir. Uygulamada daha fazla ayrıntı olmadan Çizgi çizme algoritması için kullanmak, bir şekilde ya da ötekini söylemek zor olurdu. – Tuffwer
Hesaplanması gereken yükseklik değeri, iki satır ve kayan nokta hatası arasındaki sınırın yüksekliğinin üzerinde (veya çok yakın) açık olması durumunda, eğriyi yazdırmak için satırın seçimindeki farklılık olabilir. hemen aşağıda. Çoğu zaman yazılımda bu bir kat olduğunda, aşağıdan bir sonraki satırda sona erecek şekilde bir zemin denir. – Tuffwer