Another Step Forward

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! :wink:
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:

  1. Under the File menu, there is a new option called ā€œView With KnotTyer3D.ā€ This will pop up a window which explains what KnotTyer3D is, and it provides a link to the KnotTyer3D website. If KnotTyer3D is installed on your machine then enter the path and filename for KnotTyer3D.exe in this new window, as well as the filename to be used for exporting the current diagram (these filenames will be saved to a new INI file in the FCB.exe folder). Clicking the ā€œRun KnotTyer3Dā€ button will display your diagram in KnotTyer3D. It will display up to 3 cords.

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!

  1. 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.

  2. Added an Undo feature.

  3. 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.

  4. If you CTRL+click a cell on the diagram, the tile in that cell will be rotated.

  5. 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.

  6. 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. :wink:

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!) :wink: 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 :wink:

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. :wink:

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