Author Topic: Another Step Forward  (Read 83317 times)

DaveRoot

  • Exp. Member
  • ****
  • Posts: 144
    • The Most Useful Rope Knots....
Re: Another Step Forward
« Reply #45 on: January 13, 2009, 03:22:14 PM »
The FCB program logic is straightforward and easy to follow, nice job!

In your TODO list there's an item which says, "Discard tiles and move to face click connection drawing mode."  What does this mean?


Any chance of the Knottyer3D with auto load?

Post it to the Wiki if you like and if Steve agrees.

Steve has updated his website with the new version.

Dave

DerekSmith

  • IGKT Member
  • Sr. Member
  • *****
  • Posts: 1572
  • Knot Botherer
    • ALbion Alliance
Re: Another Step Forward
« Reply #46 on: January 13, 2009, 08:40:50 PM »
The FCB program logic is straightforward and easy to follow, nice job!

In your TODO list there's an item which says, "Discard tiles and move to face click connection drawing mode."  What does this mean?

Dave


It means that we don't need the 'tiles' in order to make a diagram.  Each cell of the grid has four faces and the cord comes in one face and goes out one of the others.  This means that we could select a cord to draw with, then draw the cord (much as Steve does but with more rigour) simply by clicking on the path of the cord via the cell faces.  So if we started on say the 'west' face of a cell, then clicked on the 'east' face, we would be indicating that we needed a horizontal cord to be drawn in that cell, while if we went from 'west' to 'north' then we would want an upwards quadrant curve to be drawn.  Even crossing cells become straight forward simply by drawing a line across an existing one, we would need to be able to assign its position (either above or below the existing line) possibly by using say the shift key for below, otherwise default above (same concept for crossing a spar, default above and shift for behind).  Then we only need a couple of extra keys to add say the 'W' key for the terminator symbol and the 'S' key for the SPart symbol.

It would make drawing very rapid because you would not have to keep picking up tiles, just click from face to face and click twice to 'unconnect' a previous connection or break a cord.  Two cords would simply be a matter of selecting the second cord colour and start tracing out the path.

I had come to the conclusion that I needed to move to this system, then Steve came out with his freehand style of drawing and I considered moving totally to a gridless system.  But a little practice with Knottyer3D had me thinking that the rigour from a grid was actually a useful control to help draw good curves, but we perhaps needed a more flexible grid allowing corner routing as well to give diagonals instead of having to create diagonals by using stacks of bends.

At that point, I realised we were only a small jump away from 3D, simply by adding an above layer and a behind layer, we have the makings of 3D, but that was for the future because I did not know how to render 3D and generate the 3D rotational viewing functionality of Steves utility.

So, taking small steps, my next issue was going to move to face clicking and drop the tiles pallet.

Derek

DerekSmith

  • IGKT Member
  • Sr. Member
  • *****
  • Posts: 1572
  • Knot Botherer
    • ALbion Alliance
Re: Another Step Forward
« Reply #47 on: January 13, 2009, 09:45:02 PM »
Because the whole drawing system already exists, we could implement the face click system very easily, simply by changing the 'On Click' function to locate the nearest face of a cell, then on the next click event, us a simple Case of list to identify the tile that would have been used to create this effect and inject that tile letter into the existing code.  We might instigate it by having a toggle option which switches between pick'n'place (i.e. the now system) and the simpler 'face click' system.

What do you think?

Derek

DerekSmith

  • IGKT Member
  • Sr. Member
  • *****
  • Posts: 1572
  • Knot Botherer
    • ALbion Alliance
Re: Another Step Forward
« Reply #48 on: January 13, 2009, 10:03:13 PM »
About the time I was working on the Binary Signature and the Auto link/launch to the Knot Library, I was in discussion with Charles Hamel (AKA Nautile) about other ways of describing a knot i.e. by decomposing a knot into basic elements.

At that time I realised that a knot does not strictly have crossings, these are figments of perspective from the point of an external observer.  But a knot does not function from the perspective of an external observer.  A knot functions from within itself.  A knot functions because it wraps around itself in a series of Z and S twists which continue for given angles and have certain radii, but most of all, a Real Knot is a working system of force vectors.

I realised then that my humble little FCB was a million miles from being anything other than a representation of layout (for the external observer) and that I would have to start to think from within the knot if I was to have a chance of creating any form of meaningful signature capable of spelling out the essence of a knot.  Thanks to FCB I am a lot closer to that realisation, but this realisation still hands out there in the mists, just beyond rational perception.

I hope that future developments of the utility will help me 'see' what is so close that I can almost taste it.

Derek 

DaveRoot

  • Exp. Member
  • ****
  • Posts: 144
    • The Most Useful Rope Knots....
Re: Another Step Forward
« Reply #49 on: January 14, 2009, 02:21:06 PM »
Two cords would simply be a matter of selecting the second cord colour and start tracing out the path.
Another idea is that two cords would simply be a matter of having two WEnds.  If the program is modified to use a two-dimensional matrix (without a third dimension of cord color) then the user can place the appropriate tiles for multiple cords, selecting any colors for any sections of cord.  Multiple cords could all be the same color if the user wishes, just as they might be in a photograph of a knot.  As long as there is a termination point for each cord (i.e. a WEnd tile) then we will be able to programmatically follow each cord separately, ignoring the colors.

For example, I have the KnotTyer3D logic working properly for a single cord, although at the moment I am simply hard-coding the file paths.  I need to add a way for the user to specify the location of KnotTyer3D.exe, and I should be able to upload the changes later today.  But it doesn't work for multiple cords (yet) because when the program is looping through the tiles for cord #1, it doesn't see the tiles for any other cords.  Yet those tiles of other cords might cross over cord #1, so their crossings need to be taken into account.  If the program were to use a two-dimensional array to store the tiles (exactly modeling the two-dimensional matrix of the diagram) and if it ignores the cord colors, then it will easily be able to follow the separate cords from their WEnds all the way to their SParts (even if there are no SPart tiles). 


But a little practice with Knottyer3D had me thinking that the rigour from a grid was actually a useful control to help draw good curves, but we perhaps needed a more flexible grid allowing corner routing as well to give diagonals instead of having to create diagonals by using stacks of bends.
I agree.  A grid provides more control over the drawing of each type of tile, leading to a "cleaner" diagram.  I have been thinking about diagonals as well, but I haven't yet played with the idea to see how well it might work out.


We might instigate it by having a toggle option which switches between pick'n'place (i.e. the now system) and the simpler 'face click' system.

What do you think?
I like the toggle idea.  Different people think differently and approach tasks differently, so it would be good to retain the original method of placing tiles as an option.  I think it would also be very helpful to be able to select one or more tiles and then cut/copy/paste/drag them to another area of the diagram.  Perhaps CTRL+click can be the mechanism for selecting tiles.  The reason I mention it is so that we can think through all of the different types of "click" functionality that we might want to have before implementing any of them.


I realised then that my humble little FCB was a million miles from being anything other than a representation of layout (for the external observer) and that I would have to start to think from within the knot if I was to have a chance of creating any form of meaningful signature capable of spelling out the essence of a knot.  Thanks to FCB I am a lot closer to that realisation, but this realisation still hands out there in the mists, just beyond rational perception.

I hope that future developments of the utility will help me 'see' what is so close that I can almost taste it.
I have wrestled with this as well, trying to think past the apparent limitations of a 2D representation.  But keep in mind that FCB has already shown itself to be very handy for making quick diagrams which can easily be attached to forum posts!

Dave

DaveRoot

  • Exp. Member
  • ****
  • Posts: 144
    • The Most Useful Rope Knots....
Re: Another Step Forward
« Reply #50 on: January 14, 2009, 07:07:21 PM »
Here are some examples of KnotTyer3D files which were exported from FCB.  I hope to have the new version of FCB uploaded within the next day or two.

I have attached the .CYP files for an Overhand Loop and a Sliding Grip Hitch (which I drew in FCB), as well as the KnotTyer3D files which were exported from FCB.  The attached .TXT files need to be renamed to .KT3 because it doesn't look like I can attach .KT3 files.  The comments in the KnotTyer3D files were manually added after the files were exported from FCB.

Dave

DaveRoot

  • Exp. Member
  • ****
  • Posts: 144
    • The Most Useful Rope Knots....
Re: Another Step Forward
« Reply #51 on: January 14, 2009, 07:10:08 PM »
Here are the .CYP files for a Figure-Eight Loop and a Turk's Head (which I drew in FCB), as well as the KnotTyer3D files which were exported from FCB.  The attached .TXT files need to be renamed to .KT3 because it doesn't look like I can attach .KT3 files.  The comments in the KnotTyer3D files were manually added after the files were exported from FCB.

Dave
« Last Edit: January 14, 2009, 07:10:58 PM by DaveRoot »

DerekSmith

  • IGKT Member
  • Sr. Member
  • *****
  • Posts: 1572
  • Knot Botherer
    • ALbion Alliance
Re: Another Step Forward
« Reply #52 on: January 14, 2009, 11:40:25 PM »
Here are some examples of KnotTyer3D files which were exported from FCB.  I hope to have the new version of FCB uploaded within the next day or two.

I have attached the .CYP files for an Overhand Loop and a Sliding Grip Hitch (which I drew in FCB), as well as the KnotTyer3D files which were exported from FCB.  The attached .TXT files need to be renamed to .KT3 because it doesn't look like I can attach .KT3 files.  The comments in the KnotTyer3D files were manually added after the files were exported from FCB.

Dave


Do I understand you correctly !  You have created an FCB to KT3 parser and coded it in Delphi ALREADY ??  You didn't even know Delphi three days ago  --  serious bit of hero worship going on here Dave, it took me months before I could even start to understand what an object was - you are one clever feller Mr Root, it is good to have you on board.

Re the parsed files, good first attempts.  They demonstrate the need to use lookahead/lookback to be able to angle the curves downwards if the next junction is under or upwards if it is over, it is the curve which is transiting the third dimension rather than just the cord going behind the crossing.  You have transitioned around the 2D bends very effectively, can you transition in the third dimension as smoothly?

The Mobius TH was very much a surprise for me when I loaded it into KT3.  It was easy to follow in FCB, but in KT3 I was unable to follow it at all, a serious case of 'less is more', however, you must have been well satisfied when your parser popped out that file.

Note.  as .kt3 files are simple text files, if you ask Mel, she can confirm the safety of uploading them and add them to the permitted types (she added .fcb for me).

DerekSmith

  • IGKT Member
  • Sr. Member
  • *****
  • Posts: 1572
  • Knot Botherer
    • ALbion Alliance
Re: Another Step Forward
« Reply #53 on: January 14, 2009, 11:48:09 PM »

We might instigate it by having a toggle option which switches between pick'n'place (i.e. the now system) and the simpler 'face click' system.

What do you think?
I like the toggle idea.  Different people think differently and approach tasks differently, so it would be good to retain the original method of placing tiles as an option.  I think it would also be very helpful to be able to select one or more tiles and then cut/copy/paste/drag them to another area of the diagram.  Perhaps CTRL+click can be the mechanism for selecting tiles.  The reason I mention it is so that we can think through all of the different types of "click" functionality that we might want to have before implementing any of them.

Dave


The toggle also lets us keep the tiles for the oddments like WE, SP, Spar crossings etc.  Just draw out the lines, curves and crossings using face click, then toggle to tiles mode and select/place the specials.  I have been pondering on how to do the specials if we moved to face click, but keeping both and allowing direct toggle between both solves the problem (after all, face click through is simply a fast means of putting down tiles).

Derek

DaveRoot

  • Exp. Member
  • ****
  • Posts: 144
    • The Most Useful Rope Knots....
Re: Another Step Forward
« Reply #54 on: January 15, 2009, 12:16:25 PM »
Well, after I installed Turbo Delphi, my first happy surprise was that it is similar enough to Visual Studio (which I use all day at work) that I was able to get a feel for it pretty quickly.  I didn't know the Delphi syntax (for...next loops, case statements, file I/O, etc.), but my second happy surprise was that no matter what I needed to do, you had usually already done it somewhere in FCB.  So I just copied off of you!   :D   I had already worked out the logic for the KT3 parser before I mentioned it the other day, so basically it was just a matter of typing it all in and working out the bugs.  The part that I'm finding tricky is the GUI stuff....some of the user-interface features are similar to Visual Studio, but some aren't.  The Internet sure comes in handy!  I think my new GUI (for capturing the path to the user's installation of KnotTyer3D.exe) is finished, but I realized that we'll need an INI file to store the path so that the user only needs to point to KnotTyer3D.exe one time.  Still need to finish that part.



Re the parsed files, good first attempts.  They demonstrate the need to use lookahead/lookback to be able to angle the curves downwards if the next junction is under or upwards if it is over, it is the curve which is transiting the third dimension rather than just the cord going behind the crossing.  You have transitioned around the 2D bends very effectively, can you transition in the third dimension as smoothly?
Yeah, I tried to tweak some of the transitions a bit after looking at the results, but I decided to focus on finishing up the user-interface pieces so that others can try it out and provide some feedback and ideas for improvement.  I need to play with KnotTyer3D some more in order to figure how to improve the display.



The Mobius TH was very much a surprise for me when I loaded it into KT3.  It was easy to follow in FCB, but in KT3 I was unable to follow it at all, a serious case of 'less is more', however, you must have been well satisfied when your parser popped out that file.
Turning on the "Rainbow" option in KnotTyer3D helps a lot, but I don't see a way to set that option automatically when I pop it up.  Also, the "Zooms" values should all be 1...sometimes one of them is set to 2 when KnotTyer3D pops up.

For the release version, how about we choose a name which is descriptive of the program's functionality?  KnotDiagrammer.exe, perhaps.  Something which will call to mind what the program does.  Also, I'd like to figure out how to get it to scale itself to different screen resolutions.

Dave

DerekSmith

  • IGKT Member
  • Sr. Member
  • *****
  • Posts: 1572
  • Knot Botherer
    • ALbion Alliance
Re: Another Step Forward
« Reply #55 on: January 15, 2009, 06:19:58 PM »
Dave, I really am not precious about the name, it is a long time and a long transition since 'Frank Browns Cypher and Drawing Utility' crawled onto the screen, and the beast which it is likely soon to become deserves a fitting and catch name.  Perhaps the good folks here could suggest some names, especially as they have contributed so much to its development.

Still, you are quite good at naming (I remember the lovely Myrtle Knot), so I am happy to leave choosing to you.

I am really pleased that your slide into Delphi is going smoothly.  Hopefully before long I can be coming to you for help on using it.  Before OOP I used to code apps straight in machine code and later I used Basic.  The move to OOP and Delphi is hard but I am really enjoying Delphi - what is your perception of it so far?

Derek

DaveRoot

  • Exp. Member
  • ****
  • Posts: 144
    • The Most Useful Rope Knots....
Re: Another Step Forward
« Reply #56 on: January 15, 2009, 06:31:25 PM »
I started with BASIC many years ago, then played with C for awhile, then used PL/1 on the mainframe.  Then I started using VB 1.0 and stayed with it through its final 6.0 release.  Then we switched to VB.Net, which I thought would be a fairly simple transition since I had been using VB for many years.  Boy was I wrong!  Like you said, the move to OOP was hard.  But now I have been using VB.Net for 4+ years, so it wasn't difficult to start using Delphi.  I'm enjoying it!

Dave

roo

  • Sr. Member
  • *****
  • Posts: 1926
    • The Notable Knot Index
Re: Another Step Forward
« Reply #57 on: January 15, 2009, 06:36:41 PM »
I started with BASIC many years ago, then played with C for awhile, then used PL/1 on the mainframe.  Then I started using VB 1.0 and stayed with it through its final 6.0 release.  Then we switched to VB.Net, which I thought would be a fairly simple transition since I had been using VB for many years.  Boy was I wrong!  Like you said, the move to OOP was hard.  But now I have been using VB.Net for 4+ years, so it wasn't difficult to start using Delphi.  I'm enjoying it!

Dave


You might want to move this to e-mail. 
If you wish to add a troll to your ignore list, click "Profile" then "Buddies/Ignore List".

Notable Knot Index

DerekSmith

  • IGKT Member
  • Sr. Member
  • *****
  • Posts: 1572
  • Knot Botherer
    • ALbion Alliance
Re: Another Step Forward
« Reply #58 on: January 15, 2009, 09:49:07 PM »
I started with BASIC many years ago, then played with C for awhile, then used PL/1 on the mainframe.  Then I started using VB 1.0 and stayed with it through its final 6.0 release.  Then we switched to VB.Net, which I thought would be a fairly simple transition since I had been using VB for many years.  Boy was I wrong!  Like you said, the move to OOP was hard.  But now I have been using VB.Net for 4+ years, so it wasn't difficult to start using Delphi.  I'm enjoying it!

Dave


You might want to move this to e-mail. 

Why is that Roo ??

Are you not finding the discussion interesting?  Still, even if you aren't, someone else might, and we might just interest others into joining in with the project (there are numerous ways, not just programming).  It's definitely one of those situations where more hands make light work and it also makes the task a lot more interesting.

A few knotters are already using and finding the FCB a useful tool for knotting, and posting diagrams made with it here has helped in certain discussions, so I think the tool has merit for the knotting world although perhaps not for the branch which you enjoy.  As for peripheral banter between those involved in the development of the tool for everyone else to use should they want to (for free), I am sure that it has not offended anyone any more than chats between old salts, climbers or simply folks on holiday sharing some of their experiences with their knotting friends.  In a way it extends one of the important values of the forums early equivalent - KM - A Knotters Profile, where people continue to share life stories and snippets in the process of making new acquaintances and friends, and in case you hadn't spotted it, that is what Dave and I were doing.

So, as there is likely to be a lot more of this sort of thing and even some code snippets swapped, could I suggest that you cut us some slack and give this thread a miss for a while.  While we would love to have your constructive input to the project, your freelance censorship is not appreciated.

Thanks
Derek

roo

  • Sr. Member
  • *****
  • Posts: 1926
    • The Notable Knot Index
Re: Another Step Forward
« Reply #59 on: January 15, 2009, 10:40:36 PM »
I started with BASIC many years ago, then played with C for awhile, then used PL/1 on the mainframe.  Then I started using VB 1.0 and stayed with it through its final 6.0 release.  Then we switched to VB.Net, which I thought would be a fairly simple transition since I had been using VB for many years.  Boy was I wrong!  Like you said, the move to OOP was hard.  But now I have been using VB.Net for 4+ years, so it wasn't difficult to start using Delphi.  I'm enjoying it!

Dave


You might want to move this to e-mail. 

Why is that Roo ??


Certain aspects of the discussion are drifting far, far afield of knotting.  Is there a reason you are averse to using private communication or a different forum site for discussing topics not related to knotting?

« Last Edit: January 15, 2009, 11:48:55 PM by roo »
If you wish to add a troll to your ignore list, click "Profile" then "Buddies/Ignore List".

Notable Knot Index