←back to thread

439 points david927 | 1 comments | | HN request time: 0.206s | source

What are you working on? Any new ideas which you're thinking about?
Show context
ttd ◴[] No.44417484[source]
I'm working on a new app for creating technical diagrams - https://vexlio.com. It's an area with some heavyweight incumbents (e.g. Visio, Lucid) but I think there's good opportunity here to differentiate in simplicity and overall experience. I'm still in the fairly early phase, and I suspect I haven't quite found the best match of features to customers yet.

From a dev perspective this area has a ton of super interesting algorithmic / math / data structure applications, and computational geometry has always been special to me. It's a lot of fun to work on.

If anyone here is interested in this as a user, I'd love for any feedback or comments, here or you can email me directly: tyler@vexlio.com.

Some pages the HN crowd might be interested in:

* https://vexlio.com/blog/making-diagrams-with-syntax-highligh... * https://vexlio.com/solutions/state-diagram-maker/ * https://vexlio.com/blog/speed-up-your-overleaf-workflow-fast...

replies(19): >>44417546 #>>44417741 #>>44417746 #>>44417775 #>>44417877 #>>44418030 #>>44418112 #>>44418342 #>>44419258 #>>44420799 #>>44421310 #>>44421948 #>>44422357 #>>44426105 #>>44428516 #>>44429276 #>>44433558 #>>44434241 #>>44434526 #
phkahler ◴[] No.44434241[source]
Years ago I was making a diagram editor with the intent of doing code generation from diagrams (like simulink, not stateflow). I started with splines for the connections and decided straight lines and junctions would be better for complex diagrams. I realized that a better way to internally define the connecting wires is via a set of lines and their connectivity (vs their endpoint coordinates). Imagine each line segment is defined by a direction (vertical or horizontal) and a position (perpendicular distance from the origin) Like ax+by=d where a and b are either 0 or 1. You also need to define which other lines it connects to. Given the list of connections you can then calculate the intersections at rendering time. By sorting the list of connections you can render the line without features at the start and end, and then draw junctions for any intermediate connections. The beauty of this would be to allow dragging blocks around and having the lines follow with the junctions passing through each other as needed. There is some housekeeping with this data structure (merging colinear segments that connect, breaking segments when needed) but the UI for dragging should be much better than anything out there.
replies(1): >>44434968 #
ttd ◴[] No.44434968[source]
Interesting - do you have a writeup or a demo available somewhere? What types of junctions were you envisioning?
replies(1): >>44436157 #
1. phkahler ◴[] No.44436157[source]
In the links you posted (2 comments up) there is a PID controller. Out of the difference block the signal splits 3 ways. In Simulink that junction would just be a round dot where the lines meet. In most diagram editors that junction would probably have 5 lines connected to it. In my scheme there would be one horizontal line right through it and one vertical line. There would also be 2 short horizontal lines connecting the vertical line to the P and D blocks. In my scheme you could drag the D block up to the top above the P (D,P,I) and the junctions would change (because they're locations are computed) even though the topology has not. I never did a full implementation. email me at gmail if you want a better explanation or a quick drawing.