I for one do not mind the tech banter. In fact I am learning something, for free, that may well be of some knotting usage or elsewhere.
Kudos to the tech- geniuses!
And keep us informed please.
Scott
I for one do not mind the tech banter. In fact I am learning something, for free, that may well be of some knotting usage or elsewhere.
Kudos to the tech- geniuses!
And keep us informed please.
Scott
I just uploaded a new version of FCB (FCB.exe) to http://knotcyphers.pbwiki.com/The-FCB-Cypher. It was fun working on the KnotTyer3D parser, so I kept on adding more bells and whistles to the program!
I uploaded the source code as well (https://knotcyphers.pbwiki.com/browse/#view=ViewAllFiles). Derek, is that the proper place to upload these files? I have started to refactor (re-work) the KnotTyer3D logic in order to build some re-usable routines (e.g. a routine to find all of the WEnds in a diagram, and a routine to trace through an entire cord, etc.), but it is still a work-in-progress. See GridProcessor.pas.
Derek, do you have any modifications which need to be merged in?
Here are the updates in v4.3:
The .KT3 file which the new parser creates is simply a text file, so Derek suggested popping up the .KT3 file to allow it to be edited (for tweaking the knot in KnotTyer3D). However, KnotTyer3D has an editor which allows you to modify the file and view the results. Let me know if you find some ways to improve the way that a knot looks in KnotTyer3D!
The main FCB window is now automatically maximized when it loads (because most of the window was off of my screen when it loaded). Iām hoping that Derek or I can get it to scale the grid size based on the userās screen resolution, which will also enable us to provide zoom in/zoom out capability.
Added an Undo feature.
I thought it would be nice if the active palette tile is highlighted, but I just couldnāt get it to put a satisfactory border around the active tile. Therefore, I simply made the active tile bigger so that it stands out.
If you CTRL+click a cell on the diagram, the tile in that cell will be rotated.
For operations which will destroy your current diagram (e.g. File/New, File/Open, File/Exit), youāll now be prompted to save your changes.
The File/Save menu item is now disabled until a filename has been selected.
I tried to make it ābulletproof,ā so do your best to break it and let us know what bugs you find!
What would be a good name for this tool? Some ideas:
KnotDiagrammer
KnotMaker
KnotCharter
KnotIllustrator
KnotDesigner
KnotCanvas
KnotDraw
KnotPaint
KnotArtist
KnotSketch
Dave
I like Knotsketch
;D
SR
Is there anyway to make tiles that will allow an angled path(s)?
I vote for KnotPath.
Ooops, that isnāt in the list.
SS
Dave,
I am so glad you are a knot tyer and also a professional programmer.
You have moved this little utility on so far in just a matter of days. The advantage of having another perspective in play is also wonderfully demonstrated. Suddenly the whole utility feels much more āin controlā with the inclusion of tools like āUndoā and disabling āSaveā until there is something to save !
By parsing the diagram and linking it to KT3D, you have started the next evolutionary stage of this utility - visualising the knot in 3D. It seems as though KT3D has a number of issues to be resolved before it fully satisfies the needs of 3D visualisation and loading, but it is a marvellous jumping in point. You said that you are refactoring KT3, have you obtained the source code?
Your ātinyā enhancement of āspinningā a cell using CTRL plus āclickā has improved usability by an order of magnitude. Now instead of selecting all the right curves and right crossings, I simply place the same curve wherever I need a corner and any crossing wherever I need a crossing, then spin them around to the right orientation. Massively faster than going and clicking on the correct corner they placing it. It also allows me to āplayā with a structure so easily. It is truly a massive leap forward in usability short of moving to face clicking. Potentially, this means we can dump a load of tiles and run with just six, i.e. one of each āsortā.;
I spotted a couple of issues, the behind spar lines do not rotate and, seemingly randomly, on the tiles pallet some of the tiles stay enlarged so it is possible over time to have three or four ālargeā tiles present. I have not sorted the logic behind this event yet.
I think I have learnt more in one day by reading your code than I have in the last three months. For example, in one line
ShellExecute(Handle, āopenā, āhttp://www.abbott.demon.co.uk/knottyer3d.htmlā, nil, nil, SW_SHOWNORMAL);
You showed me the right way to launch the library. Because I did not know how to do this, I had created a rather simplistic browser and displayed the library within it, but now the library form can be disposed of and we can utilise the users default browser. Could you pop this code in for me (I think around line 390 in FCB.pas) to replace the existing Button1Click procedure.
procedure TForm5.Button1Click(Sender: TObject);
//call up the webbrowser with the binsig url.
var
LibraryUrl : PAnsiChar;
begin
LibraryUrl:= PAnsichar('http://theknotlibrary.wikidot.com/'+form1.compsig(binarySig));
ShellExecute(Handle,āopenā,LibraryUrl, nil, nil, SW_SHOWNORMAL);
end;
I also learnt about the type PAnsichar while I was at it - woohoo.
In terms of updating the code. I do not mean to impose on you, but would you be happy with doing this for a while, as you are likely to be making far more changes than I can and I can always post my tiny pieces of code for you to splice in (there, a knotting term to keep the post legit).
As for a name, the utility is already far more than just a drawing program. It computes Overs Index and the Binary Signature and allows the user to look up the knot in the Knot Library just from its structural signature, and now it is moving into 3D visualisation. It would be nice if the name could more capture the essence of all the parts which the utility has and will in time hopefully come to include. However, the simple āKnotPathā has the right connotations perhaps, although so would KnotMaker or KnotFinder ?
Well Done Dave, you are a star.
Derek
Scott, a method Dave and I have discussed called āface clickingā might just be the answer to giving us the ability to add in diagonals. I have long felt that not having a diagonal was quite a drawback and āface clickingā plus ācorner clickingā could give us this facility.
Watch this space, but in the meantime have a play with the new FCB with the tile spinning tile functionality.
Iām refactoring my KT3D parser logic, with the intention of using the new routines in GridProcessor.pas. I donāt have the source code for KT3D itself.
I was experiencing the issue of palette tiles sometimes staying enlarged, but I thought I had fixed it because I couldnāt reproduce it after I made a minor change. If you spot a pattern which consistently reproduces the problem, let me know! I havenāt worked on the spars yet, so Iāll get that done soon.
Sure, Iāll try to get that done in the next day or two.
I donāt mind making the updates (okay, Iām enjoying it!), and āsplicing inā (LOL) your pieces of code. The only issue will be finding/making the time to work on it.
I was leaning towards KnotSketch, which conveys the drawing aspect of the tool. However, it doesnāt capture the other functionality.
KnotPath and KnotFinder convey certain aspects of the tool, but to me they donāt conjure up an image of being able to make diagrams of knots.
Since the tool allows a person to make a drawing of a knot, and it can make a KnotTyer3D version of a knot, and it can make an Overs Index, and it can make a Binary Signature (see where Iām going with this yet?)ā¦I think that KnotMaker best captures most of the functionality.
Dave
Iāve been giving it a run and enjoying the learning curves. Pretty cool.
I hope the diagonal tiles come into being.
I need an erase function, because if Iāve worked a knot and then find that deep into it a mistaken routing, Iāve had to dump it all and start again.
Also I have not found/figured out the tile spinning. I must be over looking it.
I think I have the latest version = 4.30.
And perhaps as the bugs and mods are done, there will be a version that will have smaller tiles for more complex/bigger knots.
SS
And as I have used it to make a couple of knot structures to fit a specific need, then it definitely feels like we are making some headway in coming up with a name !!
Derek
To delete a tile, just right click on a blank square to select it, then paint (left click) the blank tile over any mistakes and it wipes them out. You can use right click to select any tile from the already drawn diagram and then continue painting with it.
To spin, hold down the control key then left click on the cell you want to spin - it works for elbows, crossings and lines - Isnāt that Dave a clever bugger !!
And yes, a āZoom Outā facility is on the ToDo list.
Derek
Yes Derek, he is a clever one, but then so is you.
Thanks for the pointers!
They all work !!!
SS
Today we have a āside basedā drawing scheme - a line comes in one side of the grid square and goes out one of the other sides.
We number the sides 1 though 4, so a cord might come in side 1 and go straight across and out side 3, or it might curve up and go out side 2 or curve down and go out side 4.
If we include diagonals, then we have to add in the corners (number them 5 through 8 ). Now as well as going through the sides, a cord can come in through a corner and go out any corner or side, a bit like this ā
http://knotbox1.pbwiki.com/f/Side%20%26%20corners.jpg
Today, an OH might look like this with just face connections
http://knotbox1.pbwiki.com/f/OH%20Knot%20perspective.jpg
But if we implement corner access as well we could draw like this ā¦
http://knotbox1.pbwiki.com/f/Overhand%20diagonals.jpg
The question is ā is it a worth while enhancement?
Derek
For me, the diagonals are more of a help in visualizing the knot than I had expected. Iād say itās a worthwhile enhancement.
Dave
OK Dave, but in that case, then might I suggest that we take a new approach to drawing the cells based on orientation plus the basic moves
across face to face,
face crossing,
across corner to corner,
corner crossing,
quarter turn,
knight move (face to corner, left and right)
WEnd,
Spart / loop return,
Behind spar.
Nine face connection options (four faces, four corners and the middle), and ten shape options.
If we build a new drawing procedure from this basis, then we can design in the option to scale at the same time.
We would need to hand it the cell coordinates, style, face coordinates, cord No. and zoom level. Perhaps this warrants a new unit?
Thankfully you are driving this forward now with your professional skill level, so it stands a good chance of becoming a reality.
Derek
Well done all you guys who actually understand all this! (I used to be quite good in Sinclair Basic all those long years ago!) I would just like to vote for the diagonal enhancement- I can see immediately that itās an OHK without having to squint and look sideways as I do with the āsquared offā version. I for one would be infinitely more inclined to use the app with this visualisation style. Keep up the good work Derek et al.
Good morning Gentlemen,
As I will be posting elsewhere, please accept my apologies for not being around for a few weeks, my home was severely hit by illnesses and I myself was ill for 3 weeks. I am just this week getting back into real life.
I would just like to make note that a concern was expressed that this subject digressed a bit too far out of knotting and into programming. That was about a week ago, and I wasnāt able to respond at the time.
Having read - and completely not understood very much - the five pages of discussion, I felt that the following was appropriate as a mediation:
A significant development is clearly well in progress in the representation of knots by computer graphics and image-making. This is a field which the mainstream of knotters may not be aware of or able to assist in, but it is nonetheless an area in which the Guild is proud to have members whose dual skills are blended so effectively. However, I feel that the Practical Knots board is not the most appropriate home for this discussion, since although the knots themselves are practical, the discussion creating their representation is very specialised.
By way of allowing all their fair say and space to say it I will gladly make this thread (as being the most active most recently) the first entry of a new board entitled Knot Theory and Computing, which I have today asked Mel to create. I know that elements of knot theory may appear in ordinary discussions on any board. Thatās not a problem, and helps us amateurs to grow in the craft. This board is for those who really want to get the knot between their teeth and shake it apart, either literally, figuratively, or binarily.
I have also asked Mel to move this discussion into itās new home. Feel free to put up curtains, paintings, lay carpet, etc, guys! Donāt forget the comfy sofa, well stocked kitchen and the PC
If anyone feels that there is another, historic thread which should be rehomed, please drop me a PM and Iāll send it over.
Regards
Glenys
Derek,
Just checking if you received the new version that I emailed you on Sunday, as well as the follow-up issues and questions.
Dave
If I am alone, so be it, but an update of the progress would be surely welcomed.
I hope this endeavor succeeds for all the right reasons, such as a pleasurable journey into the unknown, a voyage of learning with the ever evolving outcome being a repository of universally understood descriptions and cataloging of knots.
SS
Derek and I have been adding new features and trying out different ideas offline. Weāre working the kinks out of our new feature set, and then weāll post a new version for testing and suggestions.
Dave
Ahhh, there is life yet.
Terrific, I had thought I heard a screeching halt.
Thanks for the hard work in advance. I think the members of the knotting world will benefit from your labors.
Hopefully this will aid the cataloging of the known knots one day and make it somewhat easier to recognize what is new, if there is such a thing.
SS