coding Shift_JIS;

// ���C�u�����̓ǂݍ���
import tool.Graph3D; // 3�����O���t�������̂ɕK�v
import Math;         // ���w�֐��������̂ɕK�v


// �O���t�Ƀv���b�g������e���i�[������W�l�z���p��
int pointN = 100;      // ���W�_��
float xData[pointN];  // �e�_��X���W���i�[����z��
float yData[pointN];  // �e�_��Y���W���i�[����z��
float zData[pointN];  // �e�_��Z���W���i�[����z��


// �O���t�̃v���b�g�͈�
float xMax = 10.0;  // X�͈͂̍ő�l�i�E�[�j
float xMin = 0.0;   // X�͈͂̍ŏ��l�i���[�j
float yMax = 1.0;   // Y�͈͂̍ő�l�i��[�j
float yMin = -1.0;  // Y�͈͂̍ŏ��l�i���[�j
float zMax = 1.0;   // Z�͈͂̍ő�l�i��[�j
float zMin = -1.0;  // Z�͈͂̍ŏ��l�i���[�j

// 3�����O���t���N�����A�v���b�g�͈͂Ȃǂ̐ݒ���ς܂���
int graph = newGraph3D();             // �O���t���N��
setGraph3DRangeX(graph, xMin, xMax);  // X�͈͂�ݒ�
setGraph3DRangeY(graph, yMin, yMax);  // Y�͈͂�ݒ�
setGraph3DRangeZ(graph, zMin, zMax);  // Z�͈͂�ݒ�
setGraph3DAutoRange(graph, false, false, false); // �͈͂̎��������𖳌���
setGraph3DOption(graph, "WITH_LINES", true);    // ���v���b�g��L����


// �A�j���[�V�������[�v�i�ϐ� frame �ɉ񐔂��J�E���g���Ă����j
for (int frame=0; true; frame++) { // �񐔂ɏ����݂���ɂ� true �� frame<=1000 �ȂǂɕύX
	
	// ���̎��_�̃��[�v�񐔂���A���̎��_�̎����̒l t �����߂�
	float t = 0.05 * frame;  // �W�����傫���قǎ����������i�ށ��A�j���[�V�����������Ȃ�
	
	// ���W�l�z��̓��e���X�V
	for(int i=0; i<pointN; i++){
		
		float dx = (xMax-xMin)/(pointN-1); // X�͈͂𓙕��������Ԋu
		float x = xMin + i * dx;    // i�Ԗڂ̓_��X���W�iX�͈͂𓙕����j
		float y = sin(x + t);       // i�Ԗڂ̓_��Y���W�i�K���A�F�X�ς��ėV�ׂ܂��j
		float z = sin(2.0 * x + t); // i�Ԗڂ̓_��Y���W�i�K���A�F�X�ς��ėV�ׂ܂��j
		
		xData[i] = x;
		yData[i] = y;
		zData[i] = z;
	}
	
	// ���W�l�z���3�����O���t�Ƀv���b�g
	setGraph3DData(graph, xData, yData, zData);
	
	// 30�~���b�����ꎞ��~�i�A�j���[�V�����E�F�C�g�j
	sleep(30);
}