Więc skończyłem program, który rekurencyjnie rysuje linie, które pobierają argument "n", aby zdefiniować głębokość rekursji. Mam dwie funkcje, jedną, która rysuje względnie lewą linię, a drugą, która rysuje relatywnie prawą. Testowałem to i wydaje mi się, że działa na pierwszych 4 poziomach, ale wtedy albo linie stają się zbyt małe, by dokładnie je reprezentować, albo coś jest nie tak z moim kodem, ponieważ przerwy pomiędzy liniami wydają się być arbitralne. Miałam nadzieję, że ktoś będzie mógł przetestować mój kod i sprawdzić, czy może znaleźć problem.Sprawdź program debugowania
Poniższy obraz jest od głębokości 10.
EDIT: naprawiono część kodu, nadal potrzebują pomocy chociaż
public class Art
{
//draws the relatively left line
public static void drawLeftLine(double x0, double y0, double x1, double y1)
{
//define new x coordinate for line
//double x2 = (1/3.0)*(x1 - x0);
//color of line
StdDraw.setPenColor(StdDraw.BLUE);
//draw line by adding new x coord to original
StdDraw.line(x0, y0, x1, y1);
}
//draw relatively right line
public static void drawRightLine(double x0, double y0, double x1, double y1)
{
//define new x coord for line
//double x2 = (2/3.0)*(x1 - x0);
//color of line
StdDraw.setPenColor(StdDraw.BLUE);
//draw line by adding new x coord to original
StdDraw.line(x0, y0, x1, y1);
}
public static void cantor(int n, double x0, double y0, double x1, double y1)
{
if (n == 0)
return;
drawLeftLine(x0, y0, x1, y1);
drawRightLine(x0, y0, x1, y1);
y0 = y0 - 0.1;
y1 = y1 - 0.1;
cantor(n-1, x0, y0, x0 + ((x1 - x0))/3.0, y1); //left
cantor(n-1, (2.0/ 3) * (x1 - x0) + x0, y0, x1, y1); //right
}
public static void main(String[] args)
{
//change n into integer (depth)
int n = Integer.parseInt(args[0]);
//specify inital values for line
double x0 = 0;
double y0 = 0.9;
double x1 = 0.9;
double y1 = 0.9;
//recursive function cantor
cantor(n, x0, y0, x1, y1);
}
}
Właściwie nie wolno mi zepsuć rozmiaru płótna dla tego projektu, ale spróbuję to zaimplementować za kilka minut. Wygląda świetnie, i wspaniale jest usłyszeć, że to prawdopodobnie błąd graficzny. Jesteś mężczyzną! Dziękuję Ci! – user2782981