new linepattern for ultra, and also better edge drawer

This commit is contained in:
Zeno Rogue 2020-05-28 01:50:31 +02:00
parent 4217c7ccc7
commit 9c4a1d6d4e
2 changed files with 33 additions and 4 deletions

View File

@ -843,10 +843,28 @@ void celldrawer::draw_grid() {
dynamicval<color_t> g(poly_outline, gridcolor(c, c->move(t)));
if(fat_edges && reg3::in()) {
for(int i=0; i<S7; i++) if(c < c->move(i)) {
for(int j=0; j<cgi.face-1; j++) {
gridline(V, cgi.cellshape[i*cgi.face+j], cgi.cellshape[i*cgi.face+j+1], gridcolor(c, c->move(t)), prec);
for(int j=0; j<cgi.face; j++) {
int jj = j == cgi.face-1 ? 0 : j+1;
int jjj = jj == cgi.face-1 ? 0 : jj+1;
hyperpoint a = cgi.cellshape[i*cgi.face+j];
hyperpoint b = cgi.cellshape[i*cgi.face+jj];
if(cgflags & qIDEAL) {
ld mm = cgi.ultra_mirror_part;
if((cgflags & qULTRA) && !reg3::ultra_mirror_in())
mm = lerp(1-cgi.ultra_material_part, cgi.ultra_material_part, .99);
tie(a, b) = make_pair(normalize(lerp(a, b, mm)), normalize(lerp(b, a, mm)));
}
gridline(V, a, b, gridcolor(c, c->move(t)), prec);
if(reg3::ultra_mirror_in()) {
hyperpoint a = cgi.cellshape[i*cgi.face+j];
hyperpoint b = cgi.cellshape[i*cgi.face+jj];
hyperpoint d = cgi.cellshape[i*cgi.face+jjj];
auto& mm = cgi.ultra_mirror_part;
tie(a, d) = make_pair(normalize(lerp(a, b, mm)), normalize(lerp(d, b, mm)));
gridline(V, a, d, stdgridcolor, prec);
}
}
gridline(V, cgi.cellshape[i*cgi.face], cgi.cellshape[(i+1)*cgi.face-1], gridcolor(c, c->move(t)), prec);
}
}
else {

View File

@ -2815,6 +2815,17 @@ EX namespace linepatterns {
gridlinef(V, sh.vertices[p.first], sh.vertices[p.second], col, 2 + vid.linequality);
)
);
linepattern patUltra("ultra-connection", 0xFFFF8000, [] { return cgflags & qULTRA; },
ALLCELLS(
ignore(c);
color_t col2 = col;
if(col2 == 0xFF)
col2 = darkena(c->landparam, 0, 0xFF);
for(auto U: cgi.ultra_mirrors)
gridlinef(V, C0, V, mid(C0, U*C0), col2, 2 + vid.linequality);
)
);
#if HDR
extern linepattern patTriTree, patTriRings, patTriOther;
@ -2827,7 +2838,7 @@ EX namespace linepatterns {
&patVine, &patPalacelike, &patPalace, &patPower, &patHorocycles,
&patTriRings, &patTriTree, &patTriOther,
&patGoldbergTree, &patIrregularMaster, &patGoldbergSep, &patHeawood, &patArcm,
&patCircles, &patRadii, &patMeridians, &patParallels, &patSublines
&patCircles, &patRadii, &patMeridians, &patParallels, &patSublines, &patUltra
};
EX void clearAll() {