Я работаю над программой Java, которая выводит синусоидальную волну на консоль. Это то, что я написал до сих пор:Печать синусоидальной волны на консоли
int num = 7;
for (double y = 2; y >= 0; y-=0.2) {
for (double x = 0; x <= num; x+=0.2) {
if (((0.1+x) >= Math.asin((double)y-1)) && (((double)x-0.1) <= Math.asin((double)y-1)))
System.out.print('*');
else
System.out.print(' ');
}
System.out.println();
}
По сути, эта программа обрабатывает каждый символ в каждой строке в виде 0,2 х 0,2 областей на координатной плоскости. Если функция синуса пересекает эту область, на экран выводится звездочка. В противном случае будет напечатано пространство. При запуске, это выводится на консоль:
*
*
*
*
*
*
Может кто-нибудь сказать мне, почему моя программа останавливается после печати первой четверти волны?
Это происходит потому, что 'asin' никогда не дает вам обратно значение вне -pi..pi. 'sin', с другой стороны, является периодическим, поэтому вы можете попробовать его использовать ([demo] (http://ideone.com/YsCaOF)). – dasblinkenlight
Хорошо! Поэтому я подходил к этому с неправильного угла. Спасибо за демо! – coderPro97