added raden launch
This commit is contained in:
66
library/lib_term.ks
Normal file
66
library/lib_term.ks
Normal file
@@ -0,0 +1,66 @@
|
||||
// lib_term.ks - terminal manipulations
|
||||
// Copyright © 2015,2023 KSLib team
|
||||
// Lic. MIT
|
||||
// Original starting work by Github user: Dunbaratu
|
||||
|
||||
@lazyglobal off.
|
||||
@clobberbuiltins off.
|
||||
|
||||
// -----------
|
||||
// char_line
|
||||
// -----------
|
||||
// Perform a low level line drawing algorithm
|
||||
// with characters on the terminal.
|
||||
function char_line {
|
||||
parameter
|
||||
ch, // string (character) to draw with.
|
||||
x0, y0, x1, y1. // locations to draw from/to
|
||||
|
||||
local dX is x1-x0.
|
||||
local dY is y1-y0.
|
||||
local len is sqrt(dX^2+dY^2).
|
||||
local incSize is 2. // make loop only execute once if it's just a point.
|
||||
if len > 0 {
|
||||
set incSize to 1/len. // or let it execute a number of times if it's not.
|
||||
}
|
||||
local d is 0.
|
||||
until d > 1 {
|
||||
print ch at (d*dX+x0, d*dY+y0).
|
||||
set d to d + incSize.
|
||||
}.
|
||||
}
|
||||
|
||||
|
||||
// Draw an arc of an ellipse, using characters.
|
||||
// Note that since the screen's Y axis goes bigger going
|
||||
// DOWN, the result may be inverted from what you'd imagine.
|
||||
function char_ellipse_arc {
|
||||
parameter
|
||||
ch, // string (character) to draw with.
|
||||
x0, y0, xRad, yRad, deg0, deg1.
|
||||
|
||||
// swap if arc degrees are given backward:
|
||||
if deg0 > deg1 {
|
||||
local tmp is deg0.
|
||||
set deg0 to deg1.
|
||||
set deg1 to tmp.
|
||||
}.
|
||||
// incSize is the biggest number of degrees that is guaranteed
|
||||
// to be just barely small enough not to skip a character when drawing.
|
||||
local longRad is max(xRad,yRad).
|
||||
local incSize is arcsin(1/longRad).
|
||||
|
||||
local d is deg0.
|
||||
until d > deg1 {
|
||||
print ch at (xRad*cos(d)+x0, yRad*sin(d)+y0).
|
||||
set d to d + incSize.
|
||||
}.
|
||||
}.
|
||||
|
||||
// Draw a circle. This is a special case of char_ellipse_arc.
|
||||
function char_circle {
|
||||
parameter
|
||||
ch,
|
||||
x0, y0, rad.
|
||||
char_ellipse_arc(ch, x0, y0, rad, rad, 0, 360).
|
||||
}.
|
||||
Reference in New Issue
Block a user