Is there an orbital solver or modifier that allows orbiting tolerance? - mrtk

I'm trying to create an orbiting menu. For that it needs to follow the user around
but it also needs a follow threshold for the user to interact with every corner of it.
From a design perspective (Hololens, Hololens 2, MR,...) is it a good idea to have a floating menu?

Menu design in XR is a complex topic so maybe deserves its own question as suggested by Julia.
In short, we've seen mixed results in our user testing with floating menus. They "work" in the sense that the user can always access the menu even while walking around in experiences that cover large areas.
If your experience is confined to a smaller space, I'd recommend looking into another interaction paradigm, either using a wall, table or floor placed interaction menu.
If you do want to be able to roam freely, a floating menu may be the answer. You can then use a basic tagalong script or configure a solver (body lock) like in this example by Dong Yoon Park (under section Solver System): https://medium.com/#dongyoonpark/open-source-building-blocks-for-windows-mixed-reality-experiences-hololens-mixedrealitytoolkit-28a0a16ebb61

Related

How do I select walls along a particular axis, among all the other walls, in Revit using the Revit API?

I want to change the height of all walls but the length of walls only in a particular axis, for instance, along the x-axis.
Consecutively, could you also tell how I could alter the similar dimensions for a house? Where there are connected walls?
I see nothing in this code that means it does not work.
However, it seems to me that it does not make much sense.
One would seldom constrain all wall heights to be user defined to a certain value; instead, in most Revit models, walls are constrained to reach from a bottom level to a top level. Then, if the height of all walls needs to be modified, you would modify the elevation of the top level only.
The logic of the code guarantees that the wall location line will only be modified if the newWallLine equals XYZ.BasisX. This may never be the case, since the line is a Line object and the vector an XYZ.
I would recommend researching exactly what you wish you achieve and how to do so manually in the end user interface before addressing the task programmatically.
In general, if a feature is not available in the Revit product manually through the user interface, then the Revit API will not provide it either.
You should therefore research the optimal workflow and best practices to address your task at hand manually through the user interface first.
To do so, please discuss and analyse it with an experienced application engineer, product usage expert, or product support.
Once you have got that part sorted out, it is time to step up into the programming environment.
I hope this clarifies.

Visio: Anchor to Sloping Face of Diamond Shape?

In Visio one of the most fundamental and frustrating annoyances I'm facing is not being able to anchor to the sloping face of the diamond shape.
My organization commonly uses this shape in flow diagrams.
Whether it's a densely connected logic point, which needs more than the 5-6 anchors...
...or a self connecting loop like this:
...I often want to connect to the sloping faces of the diamond shape, but can't seem to find a way to successfully anchor to the sloping part of the shape.
Currently I'm settling for connecting one side, but that leads to frustration when things are repositioned.
I've also explored the Data and Format Shape menus presented by right clicking the shape and the path I'm looking to connect to it as those sounded promising. However, examining those menus, I haven't found anything that looks close to what I need yet.
Seems like there must be a way to do this, though.
Update
I've also tried to redraw the diamond w/ a Pencil in the ribbon's Tools pane under the Shapes dropdown ... but did not have any luck anchoring to the result.
I also have clarified that my question is relating to a basic anchoring need, given my initial example's deviation from traditional UML.
Overview
To anchor to somewhere on a shape face other than the defaults, simply add connector points. (Shift+Ctrl+1, by default)
If this is a common issue, create a master shape with additional connection points to reduce time cost.
Adding Connectors
In Visio 2010 or later:
1.) Enabling Connection Points
Under Views tab, be sure Connection Points in Visual Aids group is CHECKED:
!! NOTE: If this step is ignored, attempts to add points may fail.
2.) Enter Connection Point Edit Mode
Either enter press Shift + Ctrl + 1 or go to Tools group in Home tab and click the x (Connection Point) to enter appropriate edit mode.
3.) Select Shape
Click to select the shape to be edited.
4.) Add a point
Hold Ctrl and then click again on the desired position along the face of the selected shape to add a point.
(Visio 2013 -- after adding a point)
The point is depicted in Visio 2010 as a magenta 'x', while it's depicted as a red square in Visio 2013. The shape itself is thinly outlined, w/ pre-existing connection points shown as blue 'x's in Visio 2010; for Visio 2013, it's instead depicted as a gray bounding box, w/ pre-existing points show in gray for unselected shapes.
You must select the shape before adding the points, however, once selected as many points as are desired may be added.
BEWARE -- once a shape has been selected, you can add connections on other shapes nearby, as well, leading to potentially weird routing.
Complete!
If you don't mind: you are not asking a UML, but a Visio drawing question.
However, I answer in UML context: your drawing does not make sense. Removing the No path will just make it a more valid one. Then it should be an Action called Wait for something that continues only when a something happens. You take a decision only if there's something to decide, not to stop the control flow until an event happens.
In response to your chat question (use of UML): Everything depends. Whether or not you stick with the UML specification (actually the ISO source is available for free at the author's site) is your decision. UML itself leaves great ways to adapt the language to your domain by using profiles. Whenever you deviate from the standard you have to document that and people need to be trained accordingly.
I have to admit that the UML specification is no bedtime lecture. However, there are great sources to learn from (e.g. lots of examples are found here). I for myself work with UML in practice for more than 20 years and have to say that it was worth the time learning it. Always remember that UML is a language and like any language it needs to be spoken actively to convey ideas effectively. Here in Germany we have so many dialects and a general High German. People with a certain idiom can talk to each of their peers without issue, but people from north and south are better served to use the common idiom since their own dialects differ quite fundamentally.

Detecting Handedness from Device Use

Is there any body of evidence that we could reference to help determine whether a person is using a device (smartphone/tablet) with their left hand or right hand?
My hunch is that you may be able to use accelerometer data to detect a slight tilt, perhaps only while the user is manipulating some sort of on screen input.
The answer I'm looking for would state something like, "research shows that 90% of right handed users that utilize an input mechanism tilt their phone an average of 5° while inputting data, while 90% of left handed users utilizing an input mechanism have their phone tilted an average of -5°".
Having this data, one would be able to read accelerometer data and be able to make informed decisions regarding placement of on screen items that might otherwise be in the way for left handed users or right handed users.
You can definitely do this but if it were me, I'd try a less complicated approach. First you need to recognize that not any specific approach will yield 100% accurate results - they will be guesses but hopefully highly probable ones. With that said, I'd explore the simple-to-capture data points of basic touch events. You can leverage these data points and pull x/y axis on start/end touch:
touchStart: Triggers when the user makes contact with the touch
surface and creates a touch point inside the element the event is
bound to.
touchEnd: Triggers when the user removes a touch point from the
surface.
Here's one way to do it - it could be reasoned that if a user is left handed, they will use their left thumb to scroll up/down on the page. Now, based on the way the thumb rotates, swiping up will naturally cause the arch of the swipe to move outwards. In the case of touch events, if the touchStart X is greater than touchEnd X, you could deduce they are left handed. The opposite could be true with a right handed person - for a swipe up, if the touchStart X is less than touchEnd X, you could deduce they are right handed. See here:
Here's one reference on getting started with touch events. Good luck!
http://www.javascriptkit.com/javatutors/touchevents.shtml
There are multiple approaches and papers discussing this topic. However, most of them are written between 2012-2016. After doing some research myself I came across a fairly new article that makes use of deep learning.
What sparked my interest is the fact that they do not rely on a swipe direction, speed or position but rather on the capacitive image each finger creates during a touch.
Highly recommend reading the full paper: http://huyle.de/wp-content/papercite-data/pdf/le2019investigating.pdf
Whats even better, the data set together with Python 3.6 scripts to preprocess the data as well as train and test the model described in the paper are released under the MIT license. They also provide the trained models and the software to
run the models on Android.
Git repo: https://github.com/interactionlab/CapFingerId

Newb: WPF custom graphic control - where to start

Apologies if there is a thread for this already, I couldn't find one that I could get my teeth into.
Anyway, I'm new to WPF and want to create a custom control that will be a sort of graphic control. The graphic will always consist of a circle, containing a matrix of several squares (from several hundred to several thousand actually) The squares need to respond to mouse click and mouse over events (and ideally be possible to navigate/select via keyboard.) Each square will represent an object I've coded.
In the past I've used a grid control to display the coloured squares (with VCL in CBuilder) but I would like to make a graphical version. (Actually, another question I'd like to ask is, is there a WPF grid control where I can set the colours of individual cells?)
The question is, where to start? Do I start with a canvas and draw on it? Do I derive from an existing object? I'm just a little lacking on ideas on implementation so any pointers or advice you can offer will be greatly received.
BBz
First off I would suggest getting a decent handle on WPF and how it approaches the problem set. It is vastly different from previous .NET Desktop technologies such as WinForms. Once you have a decent understanding in regards to the separation of logic from UI and how WPF approaches the problem then you can dive in and begin making the right decisions based upon what you encounter.
The problem you mention can be solved in multiple ways. In regards to your question about making use of a Grid, that could be done as that is a layout type. It is vastly superior to the Canvas in terms of arranging your visual structure. The defined rows/columns are nothing more then containers which can hold varying UI objects. Therefore pushing a Rectangle into the Grid and coloring as desired would give you the effect you are looking for. This Rectangle could then become a custom control which would allow you to define varying properties on, as well as specific triggers for mouse overs, etc...
At a higher level you will want to encapsulate this logic as a UserControl which will also hold your custom control. Perhaps the UserControl contains the Grid which will make use of your custom control.
Hopefully this gives you some ideas around how to get started, however getting a better understanding of WPF will help you immensely in achieving your goal.

Why are login fields mostly right-aligned?

Most popular web-sites that require you to log in, have the authentication form on the right side of the page. More or less. As a right-handed person, I find it rather intuitive to look at and convenient to work with—that I don't have to sprain my neck or move my mouse too much to select the username field (though of late, most pages do that by default, immediately after loading completes). Not being omniscient I wonder how a left-handed person would react to the very same UI. Which begs the question: should this not be part of the web-site design goal to flip the forms for a left-handed person? Also, I guess it matters what language you are interacting in. For a language like English that reads left to right, having the form on your right probably makes more sense.
Some examples to look at with different layout of auth forms:
Facebook, Gmail, Y! Right
Buzzword Center
SOF Left
Feel free to share your $0.02. I'd also be interested to know if actual research has gone in to this.
Update:(02/20) Some excellent posts there. Good time to summarize:
The story so far:
Most web-pages are static in terms of manoeuvrability.
Users have little/no choice on how content is served.
English being a the lingua franca of the Internet,
web sites have, over time ended up using the left-to-right
reading order of English as the order. This is in
keeping with UI design guidelines.
Being left-handed puts you at unease when using such web-sites
(not a general rule perhaps, but people have experienced issues)
Users tend to change habits rather than complain.
Clarification: Some of you seem to have misinterpreted my reference to mouse manoeuvre. It was supposed to serve as an example of what I think I'd take time to get adjusted to if things weren't the way they are. Cheers!
i'm left-handed. even more, i'm the only one i know that uses mouse on the left and swaps buttons (so the 'main' button is my index). but i don't see why you think that anything on screen should move 'for our benefit'.
one thing i've found by obsessively observing (i did my first semi-formal poll about this when i was 13 years old) other left-handed people's habits is that there's a lot more variety among us than among right-handed people. so, if you want to do some 'multi-handed' ergonomics, you shouldn't assume anything, just allow for maximum flexibility.
I don't think it has anything to do with what's natural. At least not anymore. Whatever the original reason, it's self-perpetuating now. Most websites have the login form on the right-hand side of the page. Therefore, if you're striving for the goal of "don't make me think," you should put the login form on the right-hand side of the page...
...thus increasing the number of sites that have the login form on the right-hand side of the page and the strength of the suggestion to put the login form on the right-hand side of the page so your users won't have to think...
...thus increasing... you get the idea.
I'd guess the reason for sticking it in the upper-right corner is that it's an important thing to do on a page, but not nearly as important as the title for the page/website, and that goes in the top-left corner. It's all about reading order.
I doubt right-handedness or left-handedness makes any difference. Your hand and neck use independent muscle groups.
UI Design 101 dictates that you orient the controls of your user interface (desktop application, web page, etc.) using the natural reading order of your customers. For English users, this would entail a left-to-right, top-to-bottom approach. That is, the most important information should be in the top-left corner and the least important information should be in the bottom-right corner.
The reason various websites put their login controls at different locations has less to do with conformance with some industry standard than it does with what the website designers perceive to be the most important information.
Take Gmail for example. Google is more concerned with advertising their various products (Gmail, Web History, iGoogle, etc.) to new users than they are about you logging in. Hence, they tout their products in the place that most users look first - the top-left corner. If you've already got an account, you immediately skip over this and type your login credentials on the right-hand side. And remember that once you're logged in, you never see this screen again. With this approach, Google is clearly trying to accommodate new users, not existing users. From a business perspective, this makes sense.
You might find this page interesting.
"As the owner of a website you want people to be able to use your website easily and reach content quickly - which is your ultimate goal. Being consistent with other websites in terms of the positioning of menus and content will help your visitors, give them a better overall experience and reduce the likelihood of closing the browser in annoyance. Once you have confirmed the layout, you can by all means go wild with the content and design."
Having the login box on the right side also allows you to keep the left hand navigation bar the same for people who are logged in and those who are not. See ING Direct's website for an example.
I found this article by Joel very enlightening. The part about conforming with the leaders in your field in order to eschew confusion and frustration is particularly applicable to your question.
I am left handed but I use the mouse with my right hand, always have....I feel awkward when I use it with my left now.
I'd never really thought about this before... interesting. I think it has to do with organization for an left-to-right language universe.
Since most languages move from left-to-right, it makes sense to have the site expand from the left to the right. Along those same lines, if you need to expand your menus, it makes sense to expand your menus from the left out to the right. However, user links (such as login, profile, etc.) are typically static. If you want to keep them out of the way of the rest of your navigation, better to put them on the other corner of the page - thus the right corner, rather than the left.
Edit: Sorry, I think I misinterpreted your question to mean "why are the login links on the upper right" rather than "why is the whole form on the right side of the page".
I am not expert in design, but I have my opinion about this subject.
The main reason there is alignment on the right should have to do with the way of reading. The majority of existing languages. The most people don't care about the minority of people, they only care about the majority.
Not being omniscient I wonder how a left-handed person would react to the very same UI
I don't think that this could matters for any person. But I'm not the right kind of guy to talk about this... I write with right hand :S
It would be great that all companies start to worry about this subject, for a better world :D
It's choice, not chance, that determines your destiny.
I don't see how it matters which hand you use the mouse with (FWIW, I am right-handed but use the mouse with my left hand).
Which hand you use does not alter where your cursor rests on the screen, so you don't have to move it any further with one hand than with the other. The distance is the same - i.e. however far it is from the last thing you clicked on.

Resources