Skip to content

Commit

Permalink
draw, layout: improve defaults, nicer plots, better positioning
Browse files Browse the repository at this point in the history
fixes test/03.232.gfa as well.
  • Loading branch information
qwx9 committed Jan 21, 2025
1 parent 5143df9 commit 4fe01b4
Show file tree
Hide file tree
Showing 5 changed files with 28 additions and 25 deletions.
2 changes: 1 addition & 1 deletion draw/color.c
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ static u32int theme1[Cend] = {
static u32int theme2[Cend] = {
[Cbg] = 0xffffffff,
[Ctext] = 0xeeee00ff,
[Cedge] = 0x77777730,
[Cedge] = 0x44444477,
[Cemph] = 0xff0000ff,
[Chigh] = 0x000000ff,
};
Expand Down
15 changes: 8 additions & 7 deletions draw/draw.c
Original file line number Diff line number Diff line change
Expand Up @@ -71,18 +71,19 @@ resizenodes(void)
if((drawing.flags & DFstalelen) == 0)
return;
drawing.flags &= ~DFstalelen;
if(drawing.length.min <= 0)
drawing.length.min = 1;
if(drawing.length.min <= Minsz)
drawing.length.min = Minsz;
if(drawing.length.max <= drawing.length.min)
drawing.length.max = drawing.length.min + Nodesz;
Δ = MAX(1.0, drawing.length.max - drawing.length.min);
max = Nodesz * log(0.05 + Δ);
drawing.length.max = Minsz;
Δ = MAX(Minsz, drawing.length.max - drawing.length.min);
max = Maxsz;
for(r=rnodes, re=r+dylen(r); r<re; r++){
l = r->len;
if(l == 0.0)
l = 1.0;
r->len = (max - (max - 0.05) * exp(-l / Δ));
l = Minsz;
r->len = (max - (max - Minsz) * exp(-l / Δ));
}
drawing.length.max = (max - (max - Minsz) * exp(-drawing.length.max / Δ));
}

static inline void
Expand Down
8 changes: 4 additions & 4 deletions draw/drw.h
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,10 @@ typedef struct Range Range;

#pragma incomplete Color

#define Nodesz 5.0f
#define Ptsz 2.0f
#define Maxsz 40.0f
#define Minsz 0.1f
#define Nodesz 2.0f
#define Ptsz 1.5f
#define Minsz 0.2f
#define Maxsz (100.0f * Minsz)

struct Range{
float min;
Expand Down
26 changes: 14 additions & 12 deletions layout/pfr.c
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ enum{
Area = W * H,
};

#define C ((float)Nodesz / (Maxsz - Minsz) * 0.7f)
#define Tolerance 0.001f
#define C (Ptsz * Ptsz * Minsz / Maxsz)
#define Tolerance 0.005f

typedef struct Aux Aux;
struct Aux{
Expand Down Expand Up @@ -130,7 +130,7 @@ compute3d(void *arg, volatile int *stat, int i)
{
int fixed, skip;
ioff *e, *ee;
float t, tol, k, f, x, y, z, Δx, Δy, Δz, δx, δy, δz, δ, w, uw, vw, Δr;
float t, tol, k, f, x, y, z, Δx, Δy, Δz, δx, δy, δz, δ, w, uw, vw, mw, Δr;
RNode *r0, *r1, *r, *v;
Aux *aux;
Node *u, *u0;
Expand All @@ -144,6 +144,7 @@ compute3d(void *arg, volatile int *stat, int i)
r0 = rnodes + i;
r1 = rnodes + dylen(nodes);
skip = nlaythreads;
mw = 2.0f * drawing.length.max;
for(;;){
CLK0(clk);
Δr = 0;
Expand All @@ -155,7 +156,7 @@ compute3d(void *arg, volatile int *stat, int i)
fixed = u->flags & FNfixed;
if(fixed == FNfixed)
continue;
uw = r->len;
uw = mw - r->len;
x = r->pos[0];
y = r->pos[1];
z = r->pos[2];
Expand All @@ -168,8 +169,8 @@ compute3d(void *arg, volatile int *stat, int i)
δz = z - v->pos[2];
δ = Δ3(δx, δy, δz);
f = Fr(δ, k);
vw = v->len;
w = C * MIN(uw, vw);
vw = mw - v->len;
w = C * MAX(uw, vw);
Δx += w * f * δx / δ;
Δy += w * f * δy / δ;
Δz += w * f * δz / δ;
Expand All @@ -183,7 +184,7 @@ compute3d(void *arg, volatile int *stat, int i)
δz = v->pos[2] - z;
δ = Δ3(δx, δy, δz);
f = Fa(δ, k);
vw = v->len;
vw = mw - v->len;
if(uw < vw)
w = uw / vw;
else
Expand Down Expand Up @@ -236,7 +237,7 @@ compute(void *arg, volatile int *stat, int i)
{
int fixed, skip;
ioff *e, *ee;
float t, tol, k, f, x, y, Δx, Δy, δx, δy, δ, w, uw, vw, Δr;
float t, tol, k, f, x, y, Δx, Δy, δx, δy, δ, w, uw, vw, mw, Δr;
RNode *r0, *r1, *r, *v;
Aux *aux;
Node *u, *u0;
Expand All @@ -250,6 +251,7 @@ compute(void *arg, volatile int *stat, int i)
r0 = rnodes + i;
r1 = rnodes + dylen(rnodes);
skip = nlaythreads;
mw = 2.0f * drawing.length.max;
for(;;){
CLK0(clk);
Δr = 0;
Expand All @@ -261,7 +263,7 @@ compute(void *arg, volatile int *stat, int i)
fixed = u->flags & FNfixed;
if(fixed == FNfixed)
continue;
uw = r->len;
uw = mw - r->len;
x = r->pos[0];
y = r->pos[1];
Δx = Δy = 0.0f;
Expand All @@ -272,8 +274,8 @@ compute(void *arg, volatile int *stat, int i)
δy = y - v->pos[1];
δ = Δ(δx, δy);
f = Fr(δ, k);
vw = v->len;
w = C * MIN(uw, vw);
vw = mw - v->len;
w = C * MAX(uw, vw);
Δx += w * f * δx / δ;
Δy += w * f * δy / δ;
}
Expand All @@ -285,7 +287,7 @@ compute(void *arg, volatile int *stat, int i)
δy = v->pos[1] - y;
δ = Δ(δx, δy);
f = Fa(δ, k);
vw = v->len;
vw = mw - v->len;
if(uw < vw)
w = uw / vw;
else
Expand Down
2 changes: 1 addition & 1 deletion ui/ui.c
Original file line number Diff line number Diff line change
Expand Up @@ -426,7 +426,7 @@ resetui(void)
view.center = ZV;
view.θ = 0.0f;
view.φ = 0.0f;
view.eye = V(0.0f, 0.0f, 250.0f);
view.eye = V(0.0f, 0.0f, 100.0f);
view.up = V(0.0f, 1.0f, 0.0f);
view.Δeye = subv(view.eye, view.center);
view.pan = ZV;
Expand Down

0 comments on commit 4fe01b4

Please sign in to comment.