#include "../include/tscope.h"
#include "../include/tscope/internal.h"
int ts_coordinates(int system)
{
if (system != CARTESIAN && system != STANDARD)
ts_fatal("ts_coordinates: undefined coordinate system requested");
int oldval = _coordinates;
_coordinates = system;
return oldval;
}
int ax(float x)
{
if (!_graphics_flag)
_graphics_init();
if (_coordinates == CARTESIAN)
return (x * XMAX);
else
return (x * SXMAX);
}
int ay(float y)
{
if (!_graphics_flag)
_graphics_init();
if (_coordinates == CARTESIAN)
return (y * YMAX);
else
return (y * SYMAX);
}
int sx(int x)
{
if (!_graphics_flag)
_graphics_init();
return _destmap->b->w / 2 + x;
}
int sy(int y)
{
if (!_graphics_flag)
_graphics_init();
return _destmap->b->h / 2 - y;
}
int cx(int x)
{
if (!_graphics_flag)
_graphics_init();
return x - SXMAX / 2;
}
int cy(int y)
{
if (!_graphics_flag)
_graphics_init();
return SYMAX / 2 - y;
}
void ts_agrid()
{
if (!_graphics_flag)
_graphics_init();
int i, j;
int oldpar = ts_textmode(_bgcolor);
if (_coordinates == CARTESIAN) {
ts_circle(0, 0, 5);
ts_vline(-1, -YMAX, YMAX);
ts_vline(1, -YMAX, YMAX);
ts_hline(-XMAX, XMAX, 1);
ts_hline(-XMAX, XMAX, -1);
for (i = 0; i < XMAX; i += 100) {
ts_vline(i, -YMAX, YMAX);
ts_vline(-i, -YMAX, YMAX);
}
for (i = 0; i < YMAX; i += 100) {
ts_hline(-XMAX, XMAX, i);
ts_hline(-XMAX, XMAX, -i);
}
for (i = 0; i < XMAX; i += 50) {
if (i % 100 == 0)
continue;
for (j = 0; j < YMAX; j += 4) {
ts_putpixel(i, j);
ts_putpixel(i, -j);
ts_putpixel(-i, j);
ts_putpixel(-i, -j);
}
}
for (i = 0; i < YMAX; i += 50) {
if (i % 100 == 0)
continue;
for (j = 0; j < XMAX; j += 4) {
ts_putpixel(j, i);
ts_putpixel(j, -i);
ts_putpixel(-j, i);
ts_putpixel(-j, -i);
}
}
ts_printf_centre(15, 15, "0");
for (i = 100; i < XMAX; i += 100) {
ts_rect(i - 1, 5, i + 1, -5);
ts_rect(-i - 1, 5, -i + 1, -5);
ts_printf_centre(i, 15, "%d", i);
ts_printf_centre(-i, 15, "-%d", i);
}
for (i = 100; i < YMAX; i += 100) {
ts_rect(5, i - 1, -5, i + 1);
ts_rect(5, -i - 1, -5, -i + 1);
ts_printf(15, i, "%d", i);
ts_printf(15, -i, "-%d", i);
}
} else {
ts_circle(0, 0, 5);
ts_vline(0, 0, SYMAX);
ts_vline(1, 0, SYMAX);
ts_vline(2, 0, SYMAX);
ts_hline(0, SXMAX, 0);
ts_hline(0, SXMAX, 1);
ts_hline(0, SXMAX, 2);
for (i = 0; i < SXMAX; i += 100)
ts_vline(i, 0, SYMAX);
for (i = 0; i < SYMAX; i += 100)
ts_hline(0, SXMAX, i);
for (i = 0; i < SXMAX; i += 50) {
if (i % 100 == 0)
continue;
for (j = 0; j < SYMAX; j += 4)
ts_putpixel(i, j);
}
for (i = 0; i < SYMAX; i += 50) {
if (i % 100 == 0)
continue;
for (j = 0; j < SXMAX; j += 4)
ts_putpixel(j, i);
}
ts_printf_centre(15, 15, "0");
for (i = 100; i < SXMAX; i += 100) {
ts_rect(i - 1, 5, i + 1, 0);
ts_printf_centre(i, 15, "%d", i);
}
for (i = 100; i < SYMAX; i += 100) {
ts_rect(5, i - 1, 0, i + 1);
ts_printf(15, i, "%d", i);
}
}
ts_textmode(oldpar);
}
void ts_rgrid()
{
if (!_graphics_flag)
_graphics_init();
int i, j;
int oldpar = ts_textmode(_bgcolor);
if (_coordinates == CARTESIAN) {
ts_circle(0, 0, 5);
ts_vline(-1, -YMAX, YMAX);
ts_vline(1, -YMAX, YMAX);
ts_hline(-XMAX, XMAX, 1);
ts_hline(-XMAX, XMAX, -1);
for (i = 0; i <= XMAX; i += XMAX / 2) {
ts_vline(i, YMAX, -YMAX);
ts_vline(-i, YMAX, -YMAX);
}
for (i = 0; i <= YMAX; i += YMAX / 2) {
ts_hline(-XMAX, XMAX, i);
ts_hline(-XMAX, XMAX, -i);
}
for (i = 0; i < XMAX; i += XMAX / 10) {
for (j = 0; j < YMAX; j += 4) {
ts_putpixel(i, j);
ts_putpixel(i, -j);
ts_putpixel(-i, j);
ts_putpixel(-i, -j);
}
}
for (i = 0; i < YMAX; i += YMAX / 10) {
for (j = 0; j < XMAX; j += 4) {
ts_putpixel(j, i);
ts_putpixel(j, -i);
ts_putpixel(-j, i);
ts_putpixel(-j, -i);
}
}
ts_printf_centre(15, 15, "0");
ts_printf_centre(XMAX / 2, 15, "0.5");
ts_printf_centre(-XMAX / 2, 15, "-0.5");
ts_printf_centre(15, YMAX / 2, "0.5");
ts_printf_centre(15, -YMAX / 2, "-0.5");
for (i = 0; i < XMAX; i += XMAX / 2) {
ts_rect(i - 1, 5, i + 1, -5);
ts_rect(-i - 1, 5, -i + 1, -5);
}
for (i = 0; i < YMAX; i += YMAX / 2) {
ts_rect(5, i - 1, -5, i + 1);
ts_rect(5, -i - 1, -5, -i + 1);
}
} else {
ts_circle(0, 0, 5);
ts_vline(0, 0, SYMAX);
ts_vline(1, 0, SYMAX);
ts_vline(2, 0, SYMAX);
ts_hline(0, SXMAX, 0);
ts_hline(0, SXMAX, 1);
ts_hline(0, SXMAX, 2);
for (i = 0; i < SXMAX; i += SXMAX / 4)
ts_vline(i, 0, SYMAX);
for (i = 0; i < SYMAX; i += SYMAX / 4)
ts_hline(0, SXMAX, i);
for (i = 0; i < SXMAX; i += SXMAX / 20)
for (j = 0; j < SYMAX; j += 4)
ts_putpixel(i, j);
for (i = 0; i < SYMAX; i += SYMAX / 20)
for (j = 0; j < SXMAX; j += 4)
ts_putpixel(j, i);
ts_printf_centre(15, 15, "0");
int it = 0;
for (i = 0; i < SXMAX; i += SXMAX / 4) {
ts_rect(i - 1, 5, i + 1, -5);
if (it > 0)
ts_printf_centre(it * SXMAX / 4, 15, "%3.2f",
(float) it / 4);
it++;
}
it = 0;
for (i = 0; i < SYMAX; i += SYMAX / 4) {
ts_rect(5, i - 1, -5, i + 1);
if (it > 0)
ts_printf_centre(25, it * SYMAX / 4, "%3.2f",
(float) it / 4);
it++;
}
}
ts_textmode(oldpar);
}